devterview_$ iniciar simulação

Implementando rate limiting em uma API

DifícilSêniorAPIs

Pergunta

Como você implementaria rate limiting por usuário em uma API com múltiplas instâncias rodando atrás de um load balancer?

Resposta esperada

O contador de requisições não pode viver na memória de cada instância — cada instância veria só uma fração do tráfego do usuário e o limite real seria multiplicado pelo número de instâncias. A implementação correta usa um store compartilhado (Redis, geralmente com um script Lua atômico ou comandos INCR+EXPIRE) para que todas as instâncias consultem e atualizem o mesmo contador. O retorno ao cliente deve incluir headers padrão (X-RateLimit-Remaining, Retry-After) para que ele saiba quando tentar de novo.

Por que perguntam isso

Esse é o erro mais comum de quem nunca rodou rate limiting em produção multi-instância: implementar em memória e o limite 'não funcionar' porque cada instância conta separado.

#rate-limiting#redis#apis
publicidade

Relacionadas