À medida que os microsserviços escalam, uma única dependência lenta ou um pico inesperado de tráfego pode causar falhas em cascata em toda a cadeia de chamadas e derrubar o ambiente de produção. A proteção de tráfego no Microservices Engine (MSE) utiliza o tráfego como ponto de partida para garantir a estabilidade dos serviços por meio de limitação de taxa em tempo real, disjuntor, degradação e controles contra sobrecarga do sistema em aplicações distribuídas. Como produto comercial do framework open source Sentinel, este recurso é o componente central por trás de grandes eventos promocionais, como o Double 11.
Como funciona a proteção de tráfego
Em uma aplicação distribuída, a requisição de um cliente passa por várias camadas — gateway, firewall e Network Load Balancer (NLB) — antes de alcançar o serviço de rede frontend e, em seguida, os serviços de backend. Durante esse percurso, o sistema pode chamar serviços downstream e aplicações de terceiros.
A proteção de tráfego atua em todo esse fluxo de requisições. Ela oferece medidas profissionais e estáveis de proteção, analisa continuamente os padrões de tráfego em cada camada e aplica regras de proteção em segundos. As atualizações de regras entram em vigor imediatamente.
O modelo de proteção possui duas propriedades principais:
Detecção e aplicação em nível de segundo: Identifica anomalias e aplica regras poucos segundos após uma mudança no tráfego.
Atualização dinâmica de regras: Publica novas regras de proteção ou modificações em tempo real.
Quando usar cada recurso
A proteção de tráfego inclui quatro recursos complementares. Consulte a tabela abaixo para identificar o recurso mais adequado ao seu cenário:
|
Cenário |
Problema |
Recurso |
Como ajuda |
|
Vendas relâmpago ou eventos promocionais |
Picos repentinos de tráfego sobrecarregam a capacidade do backend |
Limitação de taxa de entrada |
Limita as taxas de requisições recebidas nos pontos de entrada do serviço para corresponder à capacidade downstream |
|
Transferência de carga de pico para mensagens |
Tráfego de mensagens em rajadas degrada o desempenho do consumidor |
Limitação de taxa de entrada + isolamento de concorrência |
Restringe as taxas de requisições e isola consumidores lentos para evitar que esgotem recursos compartilhados |
|
Limitação de taxa em cluster |
O tráfego agregado excede a capacidade total de um cluster de serviços |
Limitação de taxa de entrada |
Aplica limites de taxa de requisições distribuídos entre os nós do cluster |
|
Parâmetros de hotspot |
Um único valor de parâmetro (por exemplo, um ID de item acessado frequentemente) gera carga desproporcional |
Isolamento de hotspot |
Separa o tráfego de hotspot do tráfego normal para que as requisições normais mantenham sua capacidade |
|
Falhas em cascata |
Uma dependência lenta ou com falha derruba toda a cadeia de chamadas |
Disjuntor |
Aciona um disjuntor na dependência instável para limitar o raio de impacto |
Detalhes dos recursos
A proteção de tráfego fornece medidas preventivas profissionais e diversificadas:
Limitação de taxa de entrada
Controla as taxas de requisições recebidas com base na capacidade do serviço. Aplique a limitação em pontos de entrada da aplicação, como gateways, aplicações frontend e provedores de serviços, para impedir que o tráfego exceda a capacidade de processamento dos serviços downstream.
A limitação de taxa de entrada atua como a primeira linha de defesa: rejeita requisições excessivas antes que entrem no sistema, protegendo todos os serviços downstream na cadeia de chamadas.
Isolamento de concorrência
Limita o número máximo de threads simultâneas para um determinado recurso. Se uma chamada lenta mantiver uma thread ocupada por muito tempo, outras interfaces permanecem responsivas porque o pool de threads não se esgota.
Utilize o isolamento de concorrência quando seus serviços compartilharem um pool de threads comum e uma única dependência lenta puder monopolizar todas as threads disponíveis.
Isolamento de hotspot
Separa o tráfego de hotspot do tráfego normal. Isso evita que hotspots inválidos consumam a capacidade destinada ao tráfego normal. Quando um valor específico de parâmetro — como um ID de item acessado frequentemente — gera uma carga desproporcional, o isolamento de hotspot limita a taxa para esse parâmetro, garantindo que as requisições normais mantenham sua parcela de capacidade.
Disjuntor em dependências instáveis
Aplica o mecanismo de disjuntor tanto entre quanto dentro das aplicações. Quando uma dependência downstream se torna instável — respondendo lentamente ou retornando erros acima de um limiar — o disjuntor é acionado para limitar o raio de impacto e prevenir falhas em cascata.
Monitoramento
A proteção de tráfego oferece monitoramento em tempo real, além de diagnóstico e análise de tráfego no nível do cliente. Isso auxilia a equipe de O&M na adoção de medidas preventivas para proteger a estabilidade da aplicação.
A proteção de tráfego fornece três níveis de observabilidade:
|
Nível |
Escopo |
|
Monitoramento de nó único |
Métricas em tempo real para instâncias individuais de serviço |
|
Monitoramento agregado |
Visão abrangente do cluster que combina métricas de todos os nós |
|
Consultas de dados históricos |
Dados de tráfego anteriores armazenados para análise retrospectiva |
Referências
Sentinel — o framework open source no qual a proteção de tráfego se baseia.