O que é 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 na nuvem usam o limite de taxa para garantir que o fluxo de solicitações não sobrecarregue o serviço. A limitação de taxa define um limite para a velocidade e o volume de chamadas de API. Os limites de taxa são normalmente definidos em termos de solicitações por período de tempo.

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

  • Evite a sobrecarga. A limitação de taxa garante que o servidor de API permaneça estável e responsivo, evitando que qualquer usuário ou serviço individual o inunde com muitas solicitações.
  • Garantir uma utilização justa. A limitação de taxa impõe políticas de uso justo, garantindo que nenhum usuário monopoliza os recursos da API. A limitação de tarifas permite um acesso equitativo a todos os utilizadores.
  • Aumente a segurança. A limitação de taxa ajuda a mitigar ataques distribuídos de negação de serviço e outros comportamentos abusivos, restringindo o número de solicitações de fontes potencialmente maliciosas.
  • Gerencie custos. Para os prestadores de serviços em nuvem, a limitação de taxas ajuda a gerir os custos operacionais, evitando a utilização imprevisível ou excessiva de recursos.
  • Manter a qualidade do serviço. A limitação de taxas 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 na nuvem, verifique a documentação deles para verificar se eles oferecem suporte ao limite de taxa. Se isso acontecer, receberá os cabeçalhos de resposta RateLimit-... ou X-RateLimit-... com informações sobre os limites de taxa. 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 receber uma resposta com este cabeçalho definido como 0, sabe que atingiu o limite de taxa e deve aguardar a próxima janela antes de enviar outro pedido. 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 esperar antes de enviar outra solicitação. Nem todas as APIs seguem este padrão. 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, implemente a limitação de taxa em seu aplicativo. Dependendo do seu stack tecnológico, diferentes bibliotecas podem ajudá-lo a gerir a limitação de velocidade na sua aplicação. Depois de implementar o limite de taxa em seu aplicativo, teste para ver se ele lida com o limite de taxa corretamente.

Como é que a limitação de taxa afeta a sua aplicação?

Quando uma API começa a devolver 429 respostas, uma aplicação que não as trata crasha, mostra um erro genérico, tenta tão depressa que fica limitada ou descarta os dados silenciosamente. Raramente vês isto enquanto desenvolves, porque a API é rápida, és o único utilizador e os teus dados de teste são pequenos.

Como testar se a sua aplicação lida com limites de taxa

Approach O que encontra Do que sentes falta
Aguardar o ambiente de produção Limites de taxa reais Tudo, até que um utilizador lhe clique
Simula a API nos teus testes, ou deixa o teu agente de programação escrever o mock Se o seu branch de retry correr Os códigos de estado reais da API, os cabeçalhos do limite de taxa e os corpos das respostas de erro, e a política de retentativas do teu SDK. A tua aplicação também precisa de um switch só de teste para aceder ao mock.
Invoca a API real até que aplique limitação de taxa Comportamento real Não consegues atingir o limite a pedido, gastas a tua quota real e alguns limites só são reiniciados após uma hora
Intercete o tráfego real da sua aplicação e simule o limite URLs reais, o seu SDK real e a política de retentativas, e os próprios cabeçalhos da API, com um limite à sua escolha O teu código isoladamente. Guarda os testes unitários para isso.

Experimente na sua app

O Dev Proxy conta os pedidos da sua aplicação para as APIs que escolher, adiciona cabeçalhos de limite de taxa às respostas e devolve 429 quando a sua aplicação ultrapassa o limite, enquanto a sua aplicação continua a chamar os URLs reais. Também te avisa quando a tua app chama novamente a API antes do limite ser reiniciado.

Descarregue a predefinição da API que a sua aplicação chama e inicie o Dev Proxy com ela:

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

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

Passos seguintes