Partilhar via


Limitar a taxa de chamadas por subscrição

APLICA-SE A: Todas as camadas de gerenciamento de API

A rate-limit política evita picos de uso da API por assinatura, limitando a taxa de chamada a um número especificado por um período de tempo especificado. Quando a taxa de chamada é excedida, o chamador recebe um código de status de 429 Too Many Requests resposta.

Para entender a diferença entre limites de taxa e cotas, consulte Limites de taxa e cotas.

Atenção

Devido à natureza distribuída da arquitetura de limitação, a limitação de taxa nunca é completamente precisa. A diferença entre o número configurado e o número real dos pedidos permitidos varia em função do volume e taxa de pedido, da latência de back-end e de outros fatores.

Nota

Defina os elementos da política e os elementos filho na ordem fornecida na declaração de política. Saiba mais sobre como definir ou editar políticas de Gerenciamento de API.

Declaração de política

<rate-limit calls="number" renewal-period="seconds"  retry-after-header-name="custom header name, replaces default 'Retry-After'" 
        retry-after-variable-name="policy expression variable name"
        remaining-calls-header-name="header name"  
        remaining-calls-variable-name="policy expression variable name"
        total-calls-header-name="header name">
    <api name="API name" id="API id" calls="number" renewal-period="seconds" >
        <operation name="operation name" id="operation id" calls="number" renewal-period="seconds" />
    </api>
</rate-limit>

Atributos

Atributo Description Necessário Predefinição
Convocatórias O número total máximo de chamadas permitidas durante o intervalo de tempo especificado em renewal-period. Expressões de política não são permitidas. Sim N/A
período de renovação O comprimento, em segundos, da janela deslizante durante a qual o número de solicitações permitidas não deve exceder o valor especificado em calls. Valor máximo permitido: 300 segundos. Expressões de política não são permitidas. Sim N/A
retry-after-header-name O nome de um cabeçalho de resposta personalizado cujo valor é o intervalo de repetição recomendado em segundos após a taxa de chamada especificada ser excedida. Expressões de política não são permitidas. Não Retry-After
retry-after-variable-name O nome de uma variável que armazena o intervalo de repetição recomendado em segundos após a taxa de chamada especificada ser excedida. Expressões de política não são permitidas. No N/A
remaining-calls-header-name O nome de um cabeçalho de resposta cujo valor após cada execução de política é o número de chamadas restantes permitidas para o intervalo de tempo especificado no renewal-period. Expressões de política não são permitidas. No N/A
remaining-calls-variable-name O nome de uma variável que, após cada execução de política, armazena o número de chamadas restantes permitidas para o intervalo de tempo especificado no renewal-period. Expressões de política não são permitidas. No N/A
total-chamadas-cabeçalho-nome O nome de um cabeçalho de resposta cujo valor é o valor especificado em calls. Expressões de política não são permitidas. No N/A

Elementos

Elemento Description Obrigatório
api Adicione um ou mais desses elementos para impor um limite de taxa de chamada às APIs dentro do produto. Os limites de taxa de chamadas de produtos e API são aplicados de forma independente. A API pode ser referenciada via name ou id. Se ambos os atributos forem fornecidos, id serão usados e name serão ignorados. Não
operation Adicione um ou mais desses elementos para impor um limite de taxa de chamada às operações dentro de uma API. Os limites de taxa de chamada de produto, API e operação são aplicados de forma independente. A operação pode ser referenciada via name ou id. Se ambos os atributos forem fornecidos, id serão usados e name serão ignorados. Não

Atributos da API

Atributo Description Necessário Predefinição
nome O nome da API para a qual aplicar o limite de taxa. Ou name id deve ser especificado. N/A
id O ID da API para a qual aplicar o limite de taxa. Ou name id deve ser especificado. N/A
Convocatórias O número total máximo de chamadas permitidas durante o intervalo de tempo especificado em renewal-period. Expressões de política não são permitidas. Sim N/A
período de renovação O comprimento, em segundos, da janela deslizante durante a qual o número de solicitações permitidas não deve exceder o valor especificado em calls. Valor máximo permitido: 300 segundos. Expressões de política não são permitidas. Sim N/A

Atributos da operação

Atributo Description Necessário Predefinição
nome O nome da operação para a qual aplicar o limite de taxa. Ou name id deve ser especificado. N/A
id O ID da operação para a qual aplicar o limite de taxa. Ou name id deve ser especificado. N/A
Convocatórias O número total máximo de chamadas permitidas durante o intervalo de tempo especificado em renewal-period. Expressões de política não são permitidas. Sim N/A
período de renovação O comprimento, em segundos, da janela deslizante durante a qual o número de solicitações permitidas não deve exceder o valor especificado em calls. Valor máximo permitido: 300 segundos. Expressões de política não são permitidas. Sim N/A

Utilização

Notas de utilização

  • Esta política só pode ser utilizada uma vez por definição de política.
  • Esta política só é aplicada quando uma API é acedida utilizando uma chave de subscrição.
  • As contagens de limite de taxa em um gateway auto-hospedado podem ser configuradas para sincronizar localmente (entre instâncias de gateway entre nós de cluster), por exemplo, por meio da implantação de gráfico de leme para Kubernetes ou usando os modelos de implantação do portal do Azure. No entanto, as contagens de limite de taxa não são sincronizadas com outros recursos de gateway configurados na instância de Gerenciamento de API, incluindo o gateway gerenciado na nuvem. Mais informações

Exemplo

No exemplo a seguir, o limite de taxa por assinatura é de 20 chamadas por 90 segundos. Após cada execução de política, as chamadas restantes permitidas no período de tempo são armazenadas na variável remainingCallsPerSubscription.

<policies>
    <inbound>
        <base />
        <rate-limit calls="20" renewal-period="90" remaining-calls-variable-name="remainingCallsPerSubscription"/>
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

Para obter mais informações sobre como trabalhar com políticas, consulte: