Request Coalescing agrupa requisições concorrentes idênticas em uma única chamada à origem. Isso reduz carga redundante no backend durante cache miss, ajuda a evitar picos artificiais de concorrência e melhora a resiliência da infraestrutura.
O que é Request Coalescing?
Request Coalescing — também chamado de request collapsing ou deduplicação de requisições concorrentes — é uma técnica que agrupa requisições idênticas feitas ao mesmo tempo em uma única chamada à origem.
Quando muitos usuários acessam o mesmo recurso simultaneamente, o Request Coalescing permite que apenas a primeira requisição siga para o backend. As demais aguardam essa resposta e, quando ela chega, recebem o mesmo resultado sem gerar novas chamadas redundantes.
Essa técnica é especialmente útil para proteger a origem contra explosões de concorrência causadas por cache miss, expiração simultânea de objetos ou picos repentinos de tráfego.
O problema: Thundering Herd e cache stampede
Thundering Herd — também chamado de cache stampede ou dogpile effect — é o nome dado à situação em que muitas requisições concorrentes tentam buscar ou regenerar o mesmo conteúdo ao mesmo tempo.
Como isso acontece
- Um recurso muito acessado expira do cache ou deixa de estar disponível localmente.
- Muitas requisições chegam quase ao mesmo tempo para esse mesmo recurso.
- Sem coordenação, todas seguem para a origem de forma independente.
- O backend recebe uma explosão de chamadas idênticas.
- CPU, memória, conexões e dependências internas ficam sob pressão.
- A latência sobe, timeouts aparecem e o serviço pode degradar.
Esse problema nem sempre é causado por ataque. Ele também pode surgir em cenários legítimos, como:
- flash sales;
- picos de tráfego após campanhas;
- publicação de conteúdo muito acessado;
- expiração simultânea de objetos populares;
- falha temporária em camadas de cache.
Como isso se relaciona com segurança
Thundering Herd é, прежде de tudo, um problema de concorrência e resiliência. No entanto, ele pode ser explorado ou agravado em cenários maliciosos, quando atacantes tentam forçar a origem a processar o máximo possível de chamadas redundantes.
Por isso, Request Coalescing não é um substituto para controles de segurança como WAF ou proteção DDoS, mas pode ajudar a reduzir o impacto de padrões de tráfego que pressionariam desnecessariamente a origem.
Como o Request Coalescing protege a origem
O Request Coalescing atua como um mecanismo de coordenação entre requisições concorrentes.
O fluxo básico
-
A primeira requisição assume a liderança
Ao detectar que o conteúdo não está disponível no cache, a primeira requisição segue para a origem. -
As requisições subsequentes aguardam
Em vez de gerar chamadas idênticas adicionais, as demais requisições equivalentes ficam em espera. -
Uma única resposta atende o grupo
Quando a origem responde, o resultado é reaproveitado para as requisições em espera e pode ser armazenado em cache.
Benefícios práticos
Redução de carga redundante
Em vez de centenas ou milhares de chamadas iguais atingirem o backend, apenas uma chamada precisa ser processada.
Proteção da origem durante cache miss
A origem deixa de sofrer explosões artificiais de concorrência exatamente quando o objeto está indisponível no cache.
Mais previsibilidade sob pico
Mesmo em momentos de tráfego intenso, a infraestrutura tende a se comportar de forma mais estável.
Menor risco de falha em cascata
Ao reduzir pressão na origem, também se reduz o risco de impacto em bancos de dados, filas, APIs internas e outros serviços dependentes.
Request Coalescing vs. outros controles
| Controle | Papel principal | Camada |
|---|---|---|
| WAF | Filtrar padrões maliciosos de aplicação | Camada 7 |
| Proteção DDoS | Mitigar ataques volumétricos e abusivos | Camada 3/4/7 |
| Rate Limiting | Restringir volume e frequência de requisições | Camada 7 |
| Request Coalescing | Deduplicar requisições concorrentes idênticas para a origem | Camada 7 |
Request Coalescing complementa, mas não substitui, outros mecanismos de proteção. Seu papel principal é melhorar eficiência e resiliência da origem em situações de concorrência concentrada.
Quando usar Request Coalescing
Use Request Coalescing quando:
- a origem tem custo alto para gerar certas respostas;
- muitos usuários acessam os mesmos recursos ao mesmo tempo;
- cache miss pode provocar rajadas de chamadas redundantes;
- existem endpoints de leitura com alta concorrência;
- você quer reduzir pressão na origem em eventos de pico.
Endpoints comuns para uso
- APIs de catálogo de produtos;
- serviços de cálculo de frete;
- validação de promoções e elegibilidade;
- verificação de disponibilidade para visualização;
- páginas ou objetos muito acessados após expiração de cache.
Quando não usar Request Coalescing
Evite aplicar Request Coalescing quando:
- a resposta é altamente individual por usuário;
- o conteúdo não pode ser compartilhado com segurança;
- a operação é transacional ou altera estado;
- cada requisição precisa necessariamente de processamento independente;
- a requisição não é idempotente.
Request Coalescing é mais adequado para operações de leitura e respostas compartilháveis. Em operações de escrita ou dados sensíveis, ele pode não fazer sentido ou exigir controle muito cuidadoso.
Request Coalescing em uma arquitetura de resiliência
Request Coalescing funciona melhor como parte de uma arquitetura mais ampla de resiliência e proteção da origem.
Camada 1: Infraestrutura distribuída e segurança
- WAF filtra padrões de ataque conhecidos;
- rate limiting controla abuso por cliente, IP ou token;
- proteção DDoS ajuda a absorver tráfego malicioso em escala.
Camada 2: Cache e eficiência
- conteúdo em cache reduz chamadas à origem;
- políticas de TTL ajudam a equilibrar frescor e proteção;
- Micro Caching pode absorver rajadas curtas;
- Request Coalescing coordena cache miss concorrentes.
Camada 3: Proteção adicional da origem
- limites internos de concorrência evitam saturação;
- circuit breakers e timeouts controlam degradação;
- observabilidade ajuda a detectar padrões anormais;
- invalidação bem planejada evita explosões desnecessárias de miss.
Exemplo prático: picos em flash sales
Durante uma flash sale, milhares de usuários podem acessar o mesmo produto ou a mesma promoção ao mesmo tempo.
Sem Request Coalescing
- 10.000 requisições simultâneas para o mesmo recurso;
- se o objeto não estiver em cache, a origem pode receber milhares de chamadas idênticas;
- backend sobrecarregado;
- aumento de latência e risco de timeout.
Com Request Coalescing
- 10.000 requisições simultâneas para o mesmo recurso;
- apenas 1 segue para a origem;
- as demais aguardam a resposta;
- a origem processa muito menos carga redundante;
- a resposta é reaproveitada para todo o grupo.
O efeito não é “mágico”: a primeira resposta ainda precisa ser gerada. Mas a diferença é que a origem deixa de processar a mesma operação milhares de vezes em paralelo.
Melhores práticas de implementação
1. Identifique endpoints com alta chance de stampede
Mapeie recursos que combinam:
- alta taxa de leitura;
- alto custo de processamento;
- tendência a expirar ao mesmo tempo;
- grande compartilhamento entre usuários.
2. Combine com cache bem configurado
Request Coalescing funciona melhor quando complementa uma estratégia boa de cache, com:
- TTL coerente;
- invalidação controlada;
- segmentação correta;
- fallback quando a origem degrada.
3. Defina timeouts adequados
As requisições que aguardam a resposta líder não podem esperar indefinidamente. Timeouts e limites de espera devem ser compatíveis com a criticidade do endpoint.
4. Planeje o comportamento em caso de falha
Defina o que acontece quando:
- a requisição líder falha;
- a origem demora demais;
- a resposta não pode ser reutilizada;
- o cache continua indisponível.
5. Monitore sinais de stampede
Acompanhe indicadores como:
- aumento súbito de cache miss;
- crescimento de concorrência por chave;
- filas de espera prolongadas;
- pressão anormal sobre a origem.
6. Use junto com outros controles
Se houver risco de abuso, combine Request Coalescing com:
- rate limiting;
- WAF;
- proteção DDoS;
- circuit breakers e controles de backpressure.
FAQ
O que é Request Coalescing?
É uma técnica que agrupa requisições concorrentes idênticas em uma única chamada à origem, reduzindo carga redundante no backend.
Qual problema o Request Coalescing resolve?
Ele ajuda a mitigar situações como Thundering Herd e cache stampede, em que muitas requisições tentam buscar ou regenerar o mesmo conteúdo ao mesmo tempo.
Request Coalescing é uma proteção DDoS?
Não por si só. Ele não substitui proteção DDoS, mas pode reduzir o impacto de padrões de tráfego concorrente que gerariam pressão desnecessária sobre a origem.
Qual a diferença entre Request Coalescing e rate limiting?
Rate limiting controla quantas requisições podem ser feitas em um intervalo. Request Coalescing reduz quantas chamadas concorrentes idênticas realmente chegam à origem.
Quando devo usar Request Coalescing?
Quando houver endpoints de leitura com alta concorrência, alto custo de processamento e risco de cache miss gerar explosões de chamadas redundantes.
Request Coalescing pode substituir um WAF?
Não. Um WAF filtra e bloqueia tráfego malicioso em nível de aplicação. Request Coalescing coordena requisições concorrentes para reduzir carga redundante na origem.
Conclusão
Request Coalescing é uma técnica importante para proteger a origem contra explosões de concorrência em cenários de cache miss, expiração simultânea e picos de tráfego.
Ele não substitui controles clássicos de segurança, como WAF, rate limiting ou proteção DDoS, mas complementa essas camadas ao reduzir chamadas redundantes e melhorar a resiliência do backend.
Quando combinado com cache bem configurado, TTL adequado e observabilidade, Request Coalescing ajuda a manter a origem mais estável, previsível e preparada para lidar com carga concentrada.
Próximos passos
Conheça como as soluções de segurança da Azion podem ajudar a proteger sua infraestrutura de origem com recursos de cache, controle de tráfego e proteção na infraestrutura distribuída.