O que é a limitação de taxa?

A limitação de taxa é um mecanismo de controle que as APIs de nuvem usam para regular o número de solicitações que um usuário pode fazer em um tempo específico. Os produtores de API do Cloud usam a limitação de taxa para garantir que o fluxo de solicitações não sobrecarregue o serviço. A limitação de taxa define um limite na velocidade e no volume de chamadas à API. Normalmente, os limites de taxa são definidos em termos de solicitações por período de tempo.

Por que as APIs de nuvem usam limitação de taxa

  • Evite sobrecarga. A limitação de taxa garante que o servidor de API permaneça estável e responsivo, impedindo que qualquer usuário ou serviço o inunde com muitas solicitações.
  • Garanta o uso justo. A limitação de taxa impõe políticas de uso justas, garantindo que nenhum usuário único monopolize os recursos da API. A limitação de taxa permite acesso equitativo a todos os usuários.
  • Aumentar a segurança. A limitação de taxa ajuda a atenuar ataques de Negação de Serviço Distribuída e outros comportamentos abusivos restringindo o número de solicitações de fontes potencialmente mal-intencionadas.
  • Gerenciar custos. Para provedores de serviços em nuvem, a limitação de taxa ajuda a gerenciar custos operacionais, evitando o uso imprevisível ou excessivo de recursos.
  • Manter a qualidade do serviço. A limitação de taxa garante uma qualidade de serviço consistente para todos os usuários, evitando picos de tráfego.

Como você experimenta a limitação de taxa em seus aplicativos

Ao criar aplicativos que integram APIs de nuvem, verifique a documentação deles para verificar se eles dão suporte à limitação de taxa. Se eles o fizerem, você receberá cabeçalhos de resposta RateLimit-... ou X-RateLimit-... com informações sobre os limites de taxas. Você pode usar essas informações em seu aplicativo para garantir que não exceda os limites de taxa da API. Por exemplo, o RateLimit-Remaining cabeçalho indica o número de solicitações restantes na janela atual. Se você receber uma resposta com esse cabeçalho definido como 0, você saberá que atingiu o limite de taxa e deverá aguardar a próxima janela antes de enviar outra solicitação. O RateLimit-Reset cabeçalho indica a hora em que o limite de taxa é redefinido. Algumas APIs enviam os RateLimit-... cabeçalhos somente depois que você atinge um limite. Um exemplo é quando você tem 10% das solicitações restantes.

Quando você excede o limite de taxa, a API limita suas solicitações e retorna um código de status HTTP 429 Too Many Requests . Algumas APIs também podem enviar um Retry-After cabeçalho para indicar quanto tempo você deve aguardar antes de enviar outra solicitação. Nem todas as APIs seguem esse padrão. GitHub, por exemplo, pode responder com 403 em vez de 429.

Para evitar a limitação e garantir que seu aplicativo permaneça responsivo, você deve implementar a limitação de taxas no seu aplicativo. Dependendo da sua pilha de tecnologia, há diferentes bibliotecas que o ajudam a lidar com a limitação de taxas no seu aplicativo. Depois de implementar a limitação de taxa em seu aplicativo, teste para ver se ele lida com a limitação de taxa corretamente.

Como a limitação de taxa afeta seu aplicativo?

Quando uma API começa a retornar respostas 429, um aplicativo que não lida com elas falha, mostra um erro genérico, tenta novamente tão rápido que permanece limitado ou descarta dados silenciosamente. Você raramente vê nada disso durante o desenvolvimento, pois a API é rápida, você é o único usuário e seus dados de teste são pequenos.

Como testar se seu aplicativo lida com limites de taxa

Approach O que você encontra Do que você sente falta
Aguardar o ambiente de produção Limites de taxa do Real Tudo, até que um usuário clique nele
Simule a API em seus testes ou deixe seu agente de codificação escrever a simulação Se o branch de retry for executado Os códigos de status reais da API, os cabeçalhos de limite de taxa e os corpos de erro e a política de repetição do SDK. Seu aplicativo também precisa de uma opção somente de teste para acessar o mock.
Use a API verdadeira até que ela aplique limite de taxa às suas solicitações Comportamento real Você não pode atingir o limite sob demanda, você usa sua cota real, e alguns limites são redefinidos somente após uma hora
Intercepte o tráfego real do aplicativo e simule o limite URLs reais, seu SDK real e política de repetição e cabeçalhos da própria API, com um limite que você escolher Seu código de forma isolada. Guarde seus testes unitários para isso.

Experimente no seu aplicativo

Dev Proxy conta as solicitações do aplicativo para as APIs escolhidas, adiciona cabeçalhos de limite de taxa às respostas e retorna 429 quando seu aplicativo ultrapassa o limite, enquanto seu aplicativo continua chamando as URLs reais. Ele também informa quando seu aplicativo chama a API novamente antes que o limite seja redefinido.

Baixe a predefinição para a API que seu aplicativo chama e inicie o Proxy de Desenvolvimento com ela:

devproxy config get github-rate-limiting
devproxy --config-file "~dataFolder/configs/github-rate-limiting/.devproxy/devproxyrc.json"

Para chamadas do Microsoft Graph para o OneDrive e o SharePoint (/drive, /shares, /sites), use a predefinição microsoft-graph-rate-limiting. Para definir seu próprio limite para qualquer API, consulte Simular respostas de API de limite de taxa. Para instalar o Dev Proxy, consulte Configurar o Dev Proxy.

Próximas Etapas