Controle de taxa (rate-control)

O que é Controle de Taxa (rate-control)?

O controle de taxa é uma técnica frequentemente utilizada nas APIs para limitar o número de solicitações que um usuário pode fazer a um endpoint em um determinado período de tempo. Esse limite pode ser definido por minuto, hora, dia ou outro intervalo de tempo, dependendo da política do serviço. O objetivo é proteger a API de sobrecarga, garantir a disponibilidade e a confiabilidade do serviço para todos os usuários e evitar o uso abusivo ou não intencional que possa prejudicar a infraestrutura.

Situações em que o Controle de Taxa pode aparecer na Celcoin

  1. Uso Intensivo: Quando um cliente faz muitas solicitações em um curto período de tempo, ultrapassando o limite permitido.
  2. Carga de Trabalho Distribuída: Em cenários onde várias instâncias ou serviços fazem solicitações em nome do mesmo usuário ou sistema, acumulando o total de solicitações.
  3. Automação Inadequada: Scripts que executam tarefas automatizadas sem controle adequado de frequência de solicitações podem facilmente exceder os limites.
  4. Desenvolvimento e Testes: Durante a fase de desenvolvimento e testes, é comum que os desenvolvedores façam muitas solicitações para testar funcionalidades, podendo esbarrar nos limites de controle de taxa.

Status Code HTTP 429: Too Many Requests

Quando um cliente excede o limite de solicitações permitidas pela política de controle de taxa, a Celcoin responderá com o status code HTTP 429, indicando "Too Many Requests". Esse código de status é um sinal claro de que o cliente deve esperar um tempo antes de tentar fazer novas solicitações.

Nas documentações de nossas APIs, geralmente iremos incluir comentários sobre eventuais limitações no número de requisições por minuto, entretanto, essa configuração pode ser modificada de maneira dinâmica para refletir necessidades específicas.

Recomendações para os Clientes

  1. Observar os Cabeçalhos de Resposta: Muitas dos nossos Endpoints incluem cabeçalhos de resposta que informam o estado atual do limite de taxa, como o número de solicitações restantes e o tempo de espera antes que o limite seja redefinido.
  2. Implementar Estratégias de Retentativa: Clientes devem implementar lógicas de retentativa com backoff exponencial, aguardando mais tempo entre cada tentativa sucessiva de solicitação, para evitar novos excessos.
  3. Otimizar Solicitações: Avaliar a necessidade de cada solicitação e otimizar a frequência e o volume de chamadas à API para permanecer dentro dos limites estabelecidos.
  4. Monitoramento e Alertas: Implementar monitoramento das solicitações para receber alertas quando estiverem próximos de atingir os limites, permitindo ajustes proativos no uso.