Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Throttling

Última atualização: Jun 28, 2026

O throttling permite um controle preciso de tráfego para lidar com picos de acesso, sobrecarga de serviço, exaustão de recursos e ataques maliciosos. Esse mecanismo protege a estabilidade dos serviços de backend, reduz custos e melhora a experiência do usuário.

Conceitos de throttling

O throttling limita o número de requisições enviadas a um serviço em um determinado período, como 300 requisições por minuto ou 10 requisições por segundo. Isso evita que um serviço sofra sobrecarga devido ao excesso de requisições vindas de um endereço IP específico ou de clientes globais.

Por exemplo, se você limitar o número de requisições a um serviço para 300 por minuto, a 301ª requisição será negada. Simultaneamente, o sistema retornará o código de status HTTP 429, indicando excesso de requisições.

Modos de throttling

Os proxies Envoy suportam dois modos de throttling: local e global. O throttling local limita a taxa de requisições de cada instância de serviço individualmente. Já o throttling global utiliza um serviço gRPC centralizado para aplicar limites de taxa em toda a instância do Service Mesh (ASM). É possível combinar ambos os modos para aplicar diferentes níveis de controle.

Modo

Descrição

Referências

Throttling local

  • A configuração do throttling local ocorre por processo Envoy. Um processo Envoy corresponde a um pod no qual um proxy Envoy foi injetado. Essa configuração é mais simples que a do throttling global e não exige componentes adicionais. Caso você configure ambos os modos para uma instância ASM, o limite local será aplicado primeiro. Se o limite local não for atingido, o sistema aplicará o limite global. Exemplos:

    • Suponha que o throttling local limite as requisições de um cliente específico a 50 por minuto, enquanto o limite global seja de 60 requisições por minuto. Quando as requisições desse cliente ultrapassarem 50, o sistema negará o excesso, mesmo que o limite global ainda não tenha sido atingido.

    • Considere que o throttling local limite as requisições de um cliente específico a 50 por minuto e o limite global seja de 40 requisições por minuto. Ao ultrapassar 40 requisições, o sistema negará o excesso devido ao throttling global, mesmo que o limite local não tenha sido alcançado.

  • Se o pod com o limite de throttling local configurado possuir múltiplas réplicas, cada uma terá seu próprio limite. Ou seja, as requisições podem ser limitadas em uma réplica, mas não em outra.

Configure throttling local no Traffic Management Center

Throttling global ou distribuído

  • Este modo limita o número de requisições enviadas a vários serviços. Nele, todos os serviços de um cluster compartilham a mesma configuração de throttling. Geralmente, essa abordagem requer um componente externo, como um banco de dados Redis.

  • Recomenda-se o uso do throttling global em cenários onde muitos clientes enviam requisições para poucos serviços, pois isso pode interromper o funcionamento desses serviços. Esse mecanismo ajuda a prevenir falhas em cascata. Por exemplo, configure o throttling global em um gateway de entrada para limitar o total de requisições enviadas a uma instância ASM. Em seguida, configure o throttling local para restringir as requisições destinadas a serviços específicos dentro dessa instância ASM.

Configure limitação de taxa global para serviços de aplicação

Funcionamento do throttling local

Um proxy Envoy utiliza o algoritmo de token bucket para implementar o throttling local. Tokens são adicionados a um bucket em uma taxa constante. Cada requisição recebida consome um token. Quando o bucket fica vazio, as requisições subsequentes são negadas. Normalmente, é necessário especificar os seguintes parâmetros:

  • O intervalo de preenchimento do bucket

  • A quantidade de tokens adicionados ao bucket em cada intervalo

Por padrão, um proxy Envoy retorna o código de status HTTP 429 quando uma requisição é negada e o cabeçalho x-envoy-ratelimited é definido. Você pode personalizar o código de status HTTP e o cabeçalho de resposta.

Observe os seguintes conceitos ao utilizar o recurso de throttling:

  • http_filter_enabled: indica a porcentagem de requisições nas quais o limite de taxa local é verificado, mas não aplicado.

  • http_filter_enforcing: indica a porcentagem de requisições nas quais o limite de taxa local é efetivamente aplicado ou imposto.

Defina os valores como porcentagens. Por exemplo, defina http_filter_enabled para 10% das requisições e http_filter_enforcing para 5%. Dessa forma, você testa o efeito do throttling antes de aplicá-lo a todas as requisições.

Funcionamento do throttling global

O throttling global controla as taxas de requisição em uma instância ASM por meio do serviço de limitação de taxa do Envoy. Esse serviço processa o tráfego centralmente e aplica os limites de taxa com base em regras e cotas predefinidas.

image

A configuração do throttling global envolve duas partes: o filtro rate_limits do Envoy e a configuração do serviço de limitação de taxa.

  • O filtro rate_limits contém uma lista de actions. Um proxy Envoy tenta corresponder cada requisição a cada ação presente nesse filtro. Um descritor é gerado para cada ação. Esse descritor consiste em um conjunto de entradas que correspondem à ação. Cada entrada é um par chave-valor, como "descriptor-key-1": "descriptor-value-1" e "descriptor-key-2": "descriptor-value-2". Para mais informações, consulte config-http-filters-rate-limit.

  • A configuração do serviço de limitação de taxa é comparada com a entrada de descritor gerada para cada requisição. Essa configuração especifica o limite de taxa para um conjunto específico de entradas de descritor. O serviço interage com o cache Redis para determinar se deve limitar as taxas das requisições e envia a decisão de throttling ao proxy Envoy.

Em conjunto, o filtro rate_limits e o serviço de limitação de taxa implementam o throttling global. O filtro gera um descritor com base na ação configurada e o envia ao serviço de limitação de taxa, que determina o limite aplicável e retorna uma resposta de throttling. Esse mecanismo oferece controle total sobre as taxas de requisição e protege os serviços de backend contra picos de tráfego.