O controle de fluxo padrão aplica limites de taxa uniformes a todo o tráfego de uma interface. Quando um pequeno conjunto de valores de parâmetro gera carga desproporcional — como alguns IDs de produto durante uma venda relâmpago ou poucos IDs de usuário abusivos — os limites uniformes tornam-se insuficientes. A limitação de parâmetro quente identifica esses valores de alta frequência usando uma política LRU (menos recentemente usado) e aplica limites de taxa por valor com base no algoritmo de token bucket. Isso protege seus serviços sem afetar o tráfego de valores de parâmetro normais.
Cenários
Dados quentes são aqueles acessados com frequência. Pode ser necessário coletar estatísticas sobre os dados mais acessados e aplicar controle de acesso em cenários como:
Prevenção de falha de cache: restrinja o acesso aos IDs dos produtos mais comprados em um período para evitar que um grande volume de requisições sobrecarregue o banco de dados devido a falhas de cache.
Anti-brushing: limite o acesso de IDs de usuários que enviam requisições frequentemente em curto período para impedir práticas de brushing.
Como funciona a limitação de parâmetro quente
O MSE utiliza uma política LRU para coletar estatísticas sobre os parâmetros quentes acessados com maior frequência e limita as chamadas de recurso que envolvem esses parâmetros com base no algoritmo de token bucket.
Etapa 1: Abra a caixa de diálogo de criação de regra
Faça logon no MSE console e selecione uma região na barra de navegação superior.
No painel de navegação à esquerda, escolha Microservices Governance > Application Governance.
Na página Application list, clique em no cartão de recurso do aplicativo desejado.
-
Abra a caixa de diálogo Add Hot Parameter Protection (RPC/Custom Interface) usando um dos métodos a seguir:
Pela página API Details
No painel de navegação à esquerda, clique em API Details.
Para interface RPC: clique em na aba RPC service, selecione a interface, clique em na aba Hotspot Parameter Protection (RPC) no painel direito e clique em Add Hotspot Parameter Protection (RPC) Rule.
Para interface personalizada: clique em na aba Custom Interface, selecione a interface, clique em na aba Hotspot Parameter Protection no painel direito e clique em Add Hot Parameter Protection (Custom Interface) Rule.
Pela página Traffic management
No painel de navegação à esquerda, clique em Traffic management. Clique em na aba Flow protection, selecione a subaba Hot Parameter Protection (RPC/Custom Interface) e clique em Add Hot Parameter Protection (RPC/Custom Interface).
Etapa 2: Configure a regra
Na caixa de diálogo Add Hot Parameter Protection (RPC/Custom Interface), configure os parâmetros abaixo e clique em New.
|
Parâmetro |
Descrição |
|
Interface name |
Nome da interface à qual aplicar a regra. Deve ser idêntico ao nome do recurso especificado durante o rastreamento. |
|
Parameter position Index |
Índice baseado em zero do parâmetro a rastrear. Corresponde à lista de parâmetros do método RPC ou do método de rastreamento personalizado. Consulte Como funciona a indexação de parâmetros. |
|
Statistical dimension |
Métrica usada para limitação. Veja Escolha uma dimensão estatística. |
|
Statistical cycle time |
Duração da janela de tempo, em segundos. Por exemplo, se definido como 10 com limiar de 5, cada valor de parâmetro quente será acessado no máximo 5 vezes a cada janela de 10 segundos. |
|
Single machine threshold |
Limiar de QPS para cada valor de parâmetro quente. |
|
Flow control effect |
Define o tratamento das requisições excedentes. Disponível apenas quando Statistical dimension estiver definido como Number of requests. Consulte Escolha um efeito de controle de fluxo. |
Como funciona a indexação de parâmetros
A indexação é baseada em zero e mapeia a lista de parâmetros da assinatura do método:
Método RPC: para
com.aliyun.demo:methodA(param0, param1, ……), o índice0refere-se aparam0.Método de rastreamento personalizado: para
SphU.entry("demoResource", EntryType.IN, 1, param0, param1, ……), o índice0refere-se aparam0.
Escolha uma dimensão estatística
Use esta tabela para selecionar a dimensão adequada ao seu caso de uso:
|
Dimensão |
Comportamento |
Mais indicado para |
|
Number of requests |
Limita o número total de requisições dentro de uma janela de tempo. Suporta efeitos de controle de fluxo configuráveis (falha rápida ou fila). |
Cargas de trabalho com muitas leituras nas quais se deseja suavizar picos de tráfego, como consultas de produtos durante vendas relâmpago. |
|
Concurrent number |
Limita o número máximo de requisições processadas simultaneamente. Requisições excedentes são rejeitadas imediatamente (apenas falha rápida). O Flow control effect não é configurável neste modo. |
Operações intensivas em recursos ou com muitas escritas, nas quais o enfileiramento aumentaria a contenção do banco de dados, como atualizações de endereço em massa. |
Escolha um efeito de controle de fluxo
Quando Statistical dimension estiver definido como Number of requests, escolha um dos seguintes efeitos:
|
Efeito |
Comportamento |
Recomendado quando |
|
Fast failure |
Rejeita imediatamente as requisições que ultrapassam o limiar. Defina Number of buffered requests para permitir um pequeno pico acima do limiar. |
Há necessidade de baixa latência e as requisições rejeitadas podem ser tentadas novamente pelo cliente. |
|
Waiting in line |
Enfileira requisições excedentes e as processa a uma taxa constante. Especifique um valor de Timeout em milissegundos. Se a duração estimada da fila exceder o tempo limite especificado, a requisição é rejeitada diretamente. |
O cenário envolve deslocamento de carga de pico, como consumo de fila de mensagens (MQ), no qual descartar requisições é indesejável. |
Como funciona o enfileiramento: com limiar de 5, o sistema processa uma requisição a cada 200 milissegundos. Se o tempo limite for de 1.000 milissegundos e houver mais de 5 requisições na fila, as requisições adicionais serão rejeitadas.
Exemplos de configuração
Exemplo 1: Enfileirar requisições excedentes durante vendas relâmpago
Durante uma venda relâmpago, poucos IDs de produto geram tráfego massivo. Para manter a estabilidade do sistema, enfileire as requisições que excederem o limiar em vez de descartá-las imediatamente.
Objetivo: processar até 100 requisições por segundo por valor de parâmetro quente. Enfileirar requisições excedentes com tempo limite de 30 milissegundos.
|
Parâmetro |
Valor |
|
Interface name |
Nome do recurso da sua interface de venda relâmpago |
|
Parameter position Index |
Índice do parâmetro de ID do produto (por exemplo, |
|
Statistical dimension |
Number of requests |
|
Statistical cycle time |
|
|
Single machine threshold |
|
|
Flow control effect |
Waiting in line |
|
Timeout |
|
Resultado: quando um valor de parâmetro quente exceder 100 requisições em 1 segundo em uma única instância, as requisições extras serão enfileiradas. Qualquer requisição cujo tempo de espera estimado ultrapasse 30 milissegundos será rejeitada imediatamente.
Exemplo 2: Rejeitar requisições excedentes em operações intensivas em recursos
Em vendas relâmpago, usuários podem modificar endereços de entrega em massa. Essas requisições com muitas escritas consomem recursos significativos do banco de dados. Rejeite as requisições excedentes imediatamente para proteger o sistema.
Objetivo: permitir até 100 requisições simultâneas por valor de parâmetro quente. Rejeitar qualquer excesso imediatamente.
|
Parâmetro |
Valor |
|
Interface name |
Nome do recurso da sua interface de atualização de endereço |
|
Parameter position Index |
Índice do parâmetro de ID do usuário ou ID do pedido (por exemplo, |
|
Statistical dimension |
Concurrent number |
|
Statistical cycle time |
|
|
Single machine threshold |
|
Quando Statistical dimension está definido como Concurrent number, as requisições excedentes são rejeitadas imediatamente (falha rápida). O parâmetro Flow control effect não fica disponível neste modo.
Resultado: o sistema consegue processar até 100 requisições simultâneas por valor de parâmetro quente. As requisições excedentes falham imediatamente.