Skip to content
RRicardo Notes

related:: HTTP & REST, Load Balancing (Balanceamento de Carga)

Algoritmos Token Bucket e Leaky Bucket

Os algoritmos Token Bucket e Leaky Bucket são mecanismos fundamentais utilizados por API Gateways para implementar Rate Limiting (limitação de taxa) e Throttling, protegendo o backend contra sobrecargas.

1. Token Bucket (Balde de Tokens)

É um dos algoritmos mais populares para sistemas distribuídos devido à sua flexibilidade.

  • Funcionamento: Imagine um balde com uma capacidade máxima limitada. Tokens são adicionados a esse balde de forma fixa e constante ao longo do tempo (ex: 10 tokens por segundo).
  • Processamento de Requisições: Cada requisição que chega retira um token do balde. Se o balde estiver vazio, a requisição é negada.
  • Capacidade de Bursts: Sua principal característica é permitir picos curtos de tráfego (bursts). Por exemplo, se um balde tem capacidade para 200 tokens mas uma taxa de reposição de 100/segundo, o sistema pode aceitar 200 requisições de uma só vez usando o estoque acumulado, voltando depois ao ritmo de 100/segundo.
  • Consistência: É frequentemente implementado com Redis para manter contadores centralizados, embora possua uma consistência "flexível", podendo ocasionalmente deixar passar alguns pedidos a mais do que o limite estrito.

2. Leaky Bucket (Balde Furado)

Diferente do anterior, o Leaky Bucket foca em manter uma saída constante de dados para o backend.

  • Funcionamento: Independentemente da velocidade com que as requisições chegam (a "entrada"), elas são processadas e enviadas ao backend em uma taxa de saída sempre mantida e rígida.
  • Suavização de Tráfego: Ele funciona como um estabilizador, garantindo uma cadência controlada e previsível. É ideal para sistemas que não suportam variações bruscas de carga.
  • Sem Bursts: Ao contrário do Token Bucket, ele não permite rajadas de uso acima da taxa definida. Geralmente, o tamanho do balde é igual à sua taxa de reposição, impedindo qualquer flexibilização no limite.

Resumo das Diferenças

CaracterísticaToken BucketLeaky Bucket
Picos (Bursts)Permite o acúmulo de tokens para lidar com picos.Não permite picos; a saída é constante.
FocoLimites seguros, mas flexíveis.Suavização total e cadência rígida.
Uso IdealAPI Gateways de uso geral e planos comerciais.Sistemas que precisam de fluxo de dados estável.

Esses algoritmos garantem que os recursos do sistema operem dentro da capacidade disponível sem comprometer a qualidade do serviço.

Linked from (2)