A proteção de tráfego integra os recursos de proteção do Microservices Engine (MSE) ao Serverless App Engine (SAE) e controla o tráfego que chega a uma aplicação no nível da API. Use regras de limitação, isolamento de concorrência, circuit breaking e proteção de parâmetros hotspot para manter a disponibilidade da aplicação durante picos de tráfego ou quando uma dependência downstream se torna instável. A proteção de tráfego analisa a distribuição de tráfego com granularidade de segundos.
Pré-requisitos
Você implantou uma aplicação.
Você ativou o MSE Microservices Governance Enterprise Edition.
O uso do MSE gera cobranças separadas. Para mais informações sobre o faturamento do MSE, consulte Faturamento do MSE Microservices Governance.
Limites
Os seguintes limites se aplicam à proteção de tráfego:
Aplicações compatíveis — A proteção de tráfego aplica-se apenas a aplicações de microsserviços criadas em 8 de novembro de 2023 ou posteriormente.
Throughput de enfileiramento — Ao enfileirar requisições limitadas, não defina o QPS com valor superior a 1.000, o que corresponde a um intervalo de requisição de 1 milissegundo.
Versões do Apache Dubbo — As versões 2.7.0 a 2.7.3 do Apache Dubbo não suportam comportamentos personalizados. Nessas versões, uma requisição limitada retorna
java.lang.RuntimeException, e o conteúdo incluiSentinelBlockedExceptionjuntamente com as informações de limitação.Tipos de resposta personalizada — Respostas personalizadas não suportam tipos de objeto que contenham genéricos com tipos indefinidos, como
Map<K, V>eList<T>.
Escolha um tipo de regra de proteção
A proteção de tráfego oferece cinco tipos de regras, cada uma com sua própria aba no console do SAE. A tabela a seguir descreve o controle de cada tipo de regra e onde configurá-lo.
|
Tipo de regra |
O que controla |
Dimensão estatística |
Aba do console |
|
Limitação no nível da interface |
O número de consultas por segundo (QPS) de uma aplicação ou service. O tráfego é bloqueado assim que o QPS atinge o limiar. |
QPS |
Interface-level Throttling |
|
Isolamento de concorrência |
O número de threads simultâneas de uma API ou de suas dependências. |
Threads simultâneas |
Concurrency Isolation |
|
Circuit breaking |
Chamadas para uma API instável ou dependência downstream, com base no tempo de resposta ou na taxa de erros. |
Proporção de chamadas lentas ou proporção anormal |
Circuit Breaking Rules |
|
Proteção de parâmetro hotspot (RPC) |
Chamadas de resource que carregam parâmetros frequentemente acessados. Um parâmetro é identificado pela sua posição de índice no ponto de instrumentação. |
Número de requisições ou número simultâneo, por parâmetro hotspot |
Hotspot Parameter Protection (RPC) |
|
Proteção de parâmetro hotspot (requisição HTTP) |
Requisições de acesso a uma aplicação que fornece web services, com base em propriedades da requisição como endereço IP do cliente, Host, Header e parâmetro de URL. |
Contagem de requisições, por parâmetro hotspot |
Hotspot Parameter Protection (HTTP Request) |
As regras de limitação no nível da interface e as regras de proteção de parâmetro hotspot também permitem escolher como lidar com o tráfego limitado. A opção Fast failure bloqueia requisições excedentes imediatamente. Já a opção Waiting in line enfileira requisições excedentes para que passem em uma taxa constante, sendo tipicamente usada para deslocamento de carga de pico. Se você enfileirar requisições, observe o limite de throughput de enfileiramento descrito em Limites.
Acesse a aba de proteção de tráfego
Na lista de aplicações do SAE, selecione a região e o namespace no topo da página e clique em Application ID da aplicação para ir à página de detalhes.
No painel de navegação à esquerda, escolha Microservices Governance > Traffic Governance e clique na aba Traffic Protection.
Configure regras de proteção
Para os tipos de regra cujo fluxo de criação inclui o assistente Configure Protection Behavior, a última etapa consiste em selecionar um Associated Behavior, que define a resposta recebida por uma requisição após acionar a regra. Selecione o comportamento padrão se não precisar de uma resposta personalizada para requisições rejeitadas. Para parâmetros de comportamento e etapas de criação, consulte Gerenciar comportamentos.
Para regras de limitação no nível da interface, regras de isolamento de concorrência e regras de proteção de parâmetro hotspot, a opção Whether to open vem desativada por padrão. Essas regras só entram em vigor após você ativar essa chave.
Configure regras de limitação no nível da interface
Uma regra de limitação no nível da interface monitora o número de consultas por segundo (QPS) de uma aplicação ou service. Quando o QPS atinge o limiar especificado, a regra bloqueia o tráfego imediatamente. Isso evita que picos momentâneos de tráfego sobrecarreguem a aplicação e garante alta disponibilidade (HA).
Clique na aba Interface-level Throttling e em Create Throttling Rule.
-
Na caixa de diálogo Create Throttling Rule, conclua os seguintes assistentes:
No assistente Select Protection Scenario, selecione o API Type, Traffic Type e API Name, e clique em Next.
No assistente Configure Protection Rule, configure os parâmetros descritos na tabela a seguir e clique em Next.
No assistente Configure Protection Behavior, selecione um Associated Behavior e clique em Create.
A tabela a seguir descreve os parâmetros do assistente Configure Protection Rule.
|
Item de configuração |
Descrição |
|
Whether to open |
Ao ativar esta chave, a regra entra em vigor imediatamente após a criação. A chave vem desativada por padrão. |
|
Per-instance QPS threshold |
O limiar de QPS do objeto na dimensão estatística da API limitada. |
|
Flow control effect |
Selecione como lidar com o tráfego limitado. Fast failure: Ao atingir o limiar, as requisições são bloqueadas imediatamente. O conteúdo da resposta é determinado pelas configurações do módulo adaptador nas configurações do sistema da aplicação. Waiting in line: As requisições passam em uma taxa constante e as excedentes são enfileiradas. Este método é tipicamente usado para deslocamento de carga de pico. É necessário definir um período de timeout. Uma requisição falha rapidamente ao atingir o período de timeout. |
A regra aparece na aba Interface-level Throttling, onde você pode editá-la ou excluí-la.
Exemplo: desloque cargas de pico para que o tráfego passe em uma taxa constante
O tráfego de requisições apresenta picos e vales. A limitação atrasa o tráfego de pico enfileirando requisições e processando-as posteriormente. Essa abordagem atende ao maior número possível de requisições e mantém a experiência do usuário. Configure a regra de limitação com as seguintes definições:
Defina o Stand-alone QPS threshold como 5 para o modo de taxa constante.
Defina o Flow control effect como Waiting in line.
-
Defina o Timeout como 5 segundos.
O sistema processa uma requisição a cada 200 milissegundos e enfileira tarefas excedentes. Como o tempo de espera é de 5 segundos, uma tarefa cujo tempo estimado de enfileiramento excede 5 segundos falha rapidamente e retorna diretamente a resposta de limitação padrão, como uma mensagem de texto ou uma página estática.
Configure regras de isolamento de concorrência
Uma regra de isolamento de concorrência controla o número de threads simultâneas de uma API ou de suas dependências para manter a estabilidade do sistema.
Clique na aba Concurrency Isolation e em Create Isolation Rule.
-
Na caixa de diálogo Create Isolation Rule, conclua os seguintes assistentes:
No assistente Select Protection Scenario, selecione o API Type, Traffic Type e API Name, e clique em Next.
No assistente Configure Protection Rule, configure os parâmetros descritos na tabela a seguir e clique em Next.
No assistente Configure Protection Behavior, selecione um Associated Behavior e clique em Create.
A tabela a seguir descreve os parâmetros do assistente Configure Protection Rule.
|
Item de configuração |
Descrição |
|
Whether to open |
Ao ativar esta chave, a regra entra em vigor imediatamente após a criação. A chave vem desativada por padrão. |
|
Concurrency threshold |
O limiar para o número de threads simultâneas do resource, correspondendo ao número de threads em execução para esse resource. |
A regra aparece na aba Concurrency Isolation, onde você pode editá-la ou excluí-la.
Exemplo: garanta recursos suficientes para sua aplicação
Quando o tempo de resposta de uma requisição aumenta, o número de threads simultâneas cresce. Após a concorrência exceder o limiar, o sistema rejeita requisições excedentes até que as tarefas acumuladas sejam concluídas e o número de threads simultâneas diminua. Isso isola falhas e reduz a instabilidade.
Por exemplo, uma instrução SQL leva 20 milissegundos para ser executada, e espera-se 20 requisições por segundo para essa requisição. Configure a regra de isolamento com as seguintes definições:
Insira o Interface Name.
-
Defina o Concurrency threshold como 10.
Após essa configuração, se a instrução SQL encontrar um deadlock ou problemas de desempenho e se tornar uma SQL lenta, ela ocupará apenas 10 threads, mesmo que as requisições continuem chegando. As requisições contínuas, que não conseguem sair em um curto período, não esgotam as threads ativas do processo. Quando a instrução SQL volta ao normal, a concorrência diminui rapidamente. Ao cair abaixo do limiar predefinido, o sistema para de rejeitar requisições e a capacidade de processamento da aplicação se recupera rapidamente. Este método ajusta a capacidade automaticamente com base no tempo de resposta e isola aplicações instáveis.
Configure regras de circuit breaking
Uma regra de circuit breaking monitora o tempo de resposta ou a taxa de erros da sua aplicação ou de suas dependências downstream. Ao atingir o limiar especificado, o sistema reduz imediatamente a prioridade da dependência downstream. Dentro do período definido, o sistema não chama o resource instável. Isso evita que a aplicação opere em estado instável e garante alta disponibilidade. Após o término do período especificado, o sistema retoma as chamadas para o resource.
Clique na aba Circuit Breaking Rules e em Create Circuit Breaking Rule.
-
Na caixa de diálogo Create Circuit Breaking Rule, conclua os seguintes assistentes:
No assistente Select Protection Scenario, selecione o API Type e API Name, e clique em Next.
No assistente Configure Protection Rule, configure os parâmetros descritos na tabela a seguir e clique em Create.
A tabela a seguir descreve os parâmetros do assistente Configure Protection Rule.
|
Item de configuração |
Descrição |
|
Statistical window duration |
A duração da janela de tempo para estatísticas. Valores válidos: 1 segundo a 120 minutos. |
|
Minimum number of requests |
O número mínimo de requisições que aciona o circuit breaking. Se o número de requisições na janela de tempo estatística atual for menor que este valor, a regra não será acionada mesmo que a condição de circuit breaking seja atendida. |
|
Threshold Type |
Selecione Slow call ratio (%) ou Abnormal proportion (%) como limiar. Se você selecionar Slow call ratio como limiar, deverá especificar o Slow call RT permitido, que é o tempo máximo de resposta. Uma requisição com tempo de resposta superior a este valor conta como chamada lenta. No campo Circuit Breaking Ratio Threshold, defina a proporção de chamadas lentas que aciona o circuit breaking. Após ativar a regra, se o número de requisições em uma janela de tempo estatística for maior que o Minimum number of requests e a proporção de chamadas lentas for maior que o limiar, as requisições subsequentes serão bloqueadas automaticamente durante o Circuit Breaking Duration (s). Após a duração do circuit breaking, o disjuntor entra no estado de recuperação por sondagem. Se o tempo de resposta da próxima requisição for menor que o Slow call RT especificado, o circuit breaking termina. Se o tempo de resposta for maior que o Slow call RT especificado, o circuit breaking é acionado novamente. Caso selecione Abnormal proportion como limiar, defina a taxa de erros que aciona o circuit breaking no campo Circuit Breaking Ratio Threshold. Após ativar a regra, se o número de erros de negócio em uma janela de tempo estatística for maior que o Minimum number of requests e a taxa de erros for maior que o limiar, as requisições subsequentes serão bloqueadas automaticamente durante o Circuit Breaking Duration (s). |
|
Circuit Breaking Duration (s) |
Clique em Show Advanced Options para configurar este parâmetro. Representa a duração do circuit breaking após seu acionamento. Depois que um resource entra no estado de circuit breaking, as requisições falham rapidamente dentro da duração especificada. |
|
Circuit Breaking Policy |
Clique em Show Advanced Options para configurar este parâmetro. Define a política de recuperação que o disjuntor usa ao entrar na fase de recuperação (estado semiaberto). Single detection recovery: Após a duração do circuit breaking, o disjuntor sonda a próxima requisição. Se a requisição atender às expectativas (não sendo nem chamada lenta nem erro), o circuit breaking termina. Caso contrário, o disjuntor retorna à fase de circuit breaking. Progressive recovery: É necessário definir o Number of recovery phases e o Minimum number of passes per step . Após a duração do circuit breaking, o disjuntor se recupera progressivamente com base no número de fases de recuperação especificado. Se o número de requisições em uma fase atingir o número mínimo de aprovações por etapa, uma verificação é acionada. Se nenhuma das requisições verificadas exceder o limiar, o sistema aumenta gradualmente a proporção de requisições permitidas até a recuperação total do tráfego. Se uma métrica em uma das etapas exceder o limiar, o disjuntor retorna à fase de circuit breaking. A proporção de requisições é T = 100/N, onde N é o número de fases de recuperação. A proporção na primeira fase é T, na segunda é 2T, e assim por diante, até atingir 100%. Por exemplo, se o número de fases de recuperação for 3 e o número mínimo de aprovações por etapa for 5, as requisições serão permitidas nas proporções de 33%, 67% e 100% nas três fases. Quando o número de requisições em uma fase for maior ou igual a 5, uma verificação é realizada. Se as métricas da requisição não excederem o limiar, o disjuntor avança para a próxima fase de recuperação até a recuperação total do tráfego. |
A regra aparece na aba Circuit Breaking Rules, onde você pode editá-la ou excluí-la.
Exemplo: acione circuit breaking em chamadas lentas ou erros
Aplique circuit breaking quando uma chamada para um service de terceiros responder muito lentamente e afetar a API atual, ou quando seu sistema retornar erros ao exibir conteúdo de terceiros. Ambos os casos usam o mesmo tipo de regra e diferem apenas no Threshold Type selecionado.
|
Item de configuração |
Exemplo: chamadas lentas |
Exemplo: erros |
|
Interface Name |
test |
test |
|
Statistical window duration |
1 |
1 |
|
Minimum number of requests |
10 |
10 |
|
Threshold Type |
Slow call ratio |
Abnormal proportion |
|
Slow call RT |
1000 |
Não obrigatório |
|
Circuit Breaking Ratio Threshold |
80% |
80% |
|
Circuit Breaking Duration (s) |
10 |
10 |
|
Circuit Breaking Policy |
Single detection recovery |
Single detection recovery |
Em qualquer uma das configurações, a janela de tempo estatística é de 1 segundo, a regra só é acionada se a janela contiver pelo menos 10 requisições, e o circuit breaking dura 10 segundos. No exemplo de chamada lenta, uma requisição que leva mais de 1000 milissegundos é considerada lenta, e a proporção de chamadas lentas que aciona o circuit breaking é de 80%. No exemplo de erro, a taxa de erros que aciona o circuit breaking é de 80%.
Configure regras de proteção de parâmetro hotspot (RPC)
Após configurar regras de hotspot para uma aplicação, o sistema analisa os parâmetros estatísticos, que são aqueles frequentemente chamados durante as chamadas de resource. Com base nas regras de hotspot, o sistema limita as chamadas de resource que contêm parâmetros hotspot para proteger a estabilidade do sistema. Use este tipo de regra para chamadas de resource RPC, nas quais um parâmetro hotspot é identificado pela sua posição de índice no ponto de instrumentação.
Clique na aba Hotspot Parameter Protection (RPC) e em Create Hotspot Parameter Protection Rule (RPC).
-
Na caixa de diálogo Create Hotspot Parameter Protection Rule (RPC), conclua os seguintes assistentes:
No assistente Select Protection Scenario, selecione o API Name e clique em Next.
No assistente Configure Protection Rule, configure os parâmetros descritos na tabela a seguir e clique em Next.
No assistente Configure Protection Behavior, selecione um Associated Behavior e clique em Create.
A tabela a seguir descreve os parâmetros do assistente Configure Protection Rule.
|
Item de configuração |
Descrição |
|
Parameter position Index |
A posição de índice do parâmetro passado no resource do ponto de instrumentação. Corresponde à posição do índice do parâmetro em |
|
Statistical dimension |
É possível medir o número de requisições ou o número de threads simultâneas. Number of requests: Limita o número de chamadas dentro de um período. Concurrent number: Limita o número de chamadas simultâneas ao resource. |
|
Statistical cycle time |
A duração da janela de tempo estatística, em segundos. Por exemplo, se a janela de tempo estatística for de 10 segundos e o limiar de QPS for 5, cada parâmetro hotspot poderá ser acessado no máximo 5 vezes dentro de 10 segundos. |
|
Single machine threshold |
O limiar aplicado a cada parâmetro hotspot. |
|
Flow control effect |
Se a Statistical dimension estiver definida como Number of requests, selecione como lidar com o tráfego limitado. Fast failure: Ao atingir o limiar, as requisições são bloqueadas imediatamente. Neste modo, também é possível definir um Number of buffered requests, que é o número de requisições extras permitidas para rajadas de tráfego. Waiting in line: As requisições passam em uma taxa constante e as excedentes são enfileiradas. Este método é tipicamente usado para deslocamento de carga de pico. É necessário definir um período de timeout. Quando uma requisição é enfileirada, o sistema calcula seu tempo estimado de espera. Se esse tempo exceder o período máximo de timeout, a requisição é rejeitada. Por exemplo, se o Single machine threshold for definido como 5, apenas uma requisição passa a cada 200 milissegundos e as excedentes são enfileiradas. Se o Timeout for definido como 1000 milissegundos, novas requisições serão rejeitadas quando mais de 5 requisições já estiverem enfileiradas, o que corresponde a um tempo de espera superior a 1000 milissegundos. |
|
Whether to open |
Ao ativar esta chave, a regra entra em vigor imediatamente após a criação. A chave vem desativada por padrão. |
A regra aparece na aba Hotspot Parameter Protection (RPC), onde você pode editá-la ou excluí-la.
Exemplo: enfileire requisições para um item hotspot durante uma venda relâmpago
Durante vendas relâmpago e outros eventos de compra urgente, o alto tráfego pode tornar as respostas do sistema lentas ou até travá-lo. Para manter a estabilidade, configure uma regra de hotspot para que o sistema enfileire o tráfego de itens populares após ultrapassar um limiar. Este exemplo enfileira requisições excedentes para uma API RPC em vez de rejeitá-las: se as requisições para comprar o mesmo item excederem 100 em 1 segundo, as restantes serão enfileiradas.
Insira o Interface Name.
Defina a Statistical dimension como Number of requests.
Defina o Statistical cycle time como 1 segundo e o Single machine threshold como 100.
Defina o Flow control effect como Waiting in line.
-
Defina o Timeout como 30 milissegundos.
Se esta API for chamada mais de 100 vezes em 1 segundo, as requisições excedentes serão enfileiradas. Uma requisição que aguardar mais de 30 milissegundos falhará imediatamente.
Exemplo: limite chamadas frequentes que consomem recursos excessivos do sistema
Em uma venda relâmpago, os clientes às vezes também precisam alterar o endereço de entrega de um pedido. Um grande volume dessas solicitações de alteração consome recursos significativos de gravação no banco de dados. Limite as chamadas simultâneas que carregam o mesmo parâmetro hotspot para que os clientes façam a alteração posteriormente.
Insira o Interface Name.
Defina a Statistical dimension como Concurrent number.
-
Defina o Statistical cycle time como 1 segundo e o Single machine threshold como 100.
Esta configuração permite no máximo 100 chamadas simultâneas para cada parâmetro hotspot. Requisições excedentes são rejeitadas.
Configure regras de proteção de parâmetro hotspot (requisição HTTP)
Regras de proteção de parâmetro hotspot para requisições HTTP aplicam-se a aplicações que fornecem web services. Essas regras realizam modelagem granular de tráfego em parâmetros específicos nas requisições de acesso. Modele o tráfego para chamadas de resource com base em dimensões da requisição, como endereço IP, Host, Header e URL Param, para manter a estabilidade do negócio e do sistema.
Clique na aba Hotspot Parameter Protection (HTTP Request) e em Create Hotspot Parameter Protection Rule (HTTP Request).
-
Na caixa de diálogo Create Hotspot Parameter Protection Rule (HTTP Request), conclua os seguintes assistentes:
No assistente Select Protection Scenario, selecione o API Name e clique em Next.
No assistente Configure Protection Rule, configure os parâmetros descritos na tabela a seguir e clique em Next.
No assistente Configure Protection Behavior, selecione um Associated Behavior e clique em Create.
A tabela a seguir descreve os parâmetros do assistente Configure Protection Rule.
|
Item de configuração |
Descrição |
|
Parameter Properties |
Modela o tráfego com base nas propriedades do parâmetro da API selecionada. Client IP: O endereço IP do cliente. Se uma requisição passar por um proxy, o sistema tenta primeiro obter o IP do header de requisição |
|
Threshold Type |
O valor padrão é Request count. |
|
Threshold |
O limiar de QPS do objeto na dimensão estatística da API limitada. Ao definir o limiar, selecione um intervalo estatístico. Os intervalos suportados são segundo, minuto, hora e dia. Por exemplo, se você definir o limiar como 10 e selecionar minute como intervalo, não mais que 10 requisições serão permitidas por minuto. |
|
Whether to open |
Ao ativar esta chave, a regra entra em vigor imediatamente após a criação. A chave vem desativada por padrão. |
|
Throttling method |
Clique em Show Advanced Options para configurar este parâmetro. Fast failure: Se o tipo de limiar for QPS, o tráfego limitado falha rapidamente, ou seja, as requisições são bloqueadas imediatamente ao atingir o limiar. Requisições rejeitadas recebem a resposta personalizada configurada no gerenciamento de comportamento. Se nenhuma resposta personalizada estiver configurada, aplica-se o comportamento padrão, que retorna o código de erro 429 e a mensagem de texto padrão. Waiting in line: Se o tipo de limiar for QPS, as requisições limitadas passam em uma taxa constante e podem ser enfileiradas. É necessário definir um período de timeout. Uma requisição cuja expectativa é atingir o período de timeout falha imediatamente em vez de ser enfileirada. Por exemplo, se o QPS for definido como 10, apenas uma requisição passa a cada 100 milissegundos e as excedentes são enfileiradas. O período de timeout é o tempo máximo de enfileiramento. Requisições que excederem esse tempo máximo são rejeitadas. Para o limite de QPS aplicável quando requisições são enfileiradas, consulte Limites. |
|
Burst size |
Clique em Show Advanced Options para configurar este parâmetro. Se o Throttling method estiver definido como Fast failure, defina um tamanho de rajada (burst size), que é o número de requisições extras permitidas para rajadas de tráfego. |
|
Timeout |
Clique em Show Advanced Options para configurar este parâmetro. Se o Throttling method estiver definido como Waiting in line, defina um período de timeout em milissegundos. Por exemplo, se o QPS for definido como 5, apenas uma requisição passa a cada 200 milissegundos e as excedentes são enfileiradas. O período de timeout é o tempo máximo de enfileiramento. Requisições que excederem esse tempo máximo são rejeitadas. |
A regra aparece na aba Hotspot Parameter Protection (HTTP Request), onde você pode editá-la ou excluí-la.
Exemplo: venda relâmpago de um product hotspot
Durante vendas relâmpago e outros eventos de compra urgente, o alto tráfego pode tornar as respostas do sistema lentas ou até travá-lo. Para manter a estabilidade, configure uma regra de proteção de parâmetro hotspot para que o sistema rejeite o tráfego excedente de itens populares após ultrapassar um limiar. Este exemplo aplica-se a uma API HTTP e rejeita as requisições excedentes em vez de enfileirá-las.
Por exemplo, para rejeitar requisições excedentes após as requisições para o mesmo product excederem 100 em 1 segundo, configure os seguintes parâmetros. Esta regra permite no máximo 100 requisições de pedido por segundo para cada ID de product individual e rejeita as requisições de pedido excedentes para aquele product com uma resposta personalizada.
Defina as Parameter Properties como URL parameter.
Insira
stockIdpara URL parameter name.Insira 100 requisições por second para Threshold.
Defina o Throttling method como Fast failure.
Nas propriedades do parâmetro, selecione o campo de parâmetro correspondente ao ID do product hotspot. Por exemplo, se um campo stockId nos parâmetros de URL carregar o ID do product solicitado, defina a propriedade do parâmetro como URL parameter e insira o nome do campo da propriedade na requisição como nome do parâmetro.
Exemplo: previna pedidos maliciosos
Durante um evento promocional, um grande número de requisições de pedido maliciosas pode ocupar estoque de produtos ou recursos do servidor. Nesse caso, enfileire as requisições com base em seus endereços IP de source para que as requisições de acesso passem em uma taxa constante. Isso evita que requisições excessivas afetem a estabilidade do service. Configure a seguinte regra:
Defina as Parameter Properties como Client IP.
Mantenha o valor padrão Request count para Threshold Type.
Insira 100 requisições por second para Threshold.
Defina o Throttling method como Waiting in line.
Insira 30 milissegundos para Timeout.
-
Ative a opção Whether to open.
Com esta regra, as requisições de cada endereço IP de source passam a uma taxa de uma requisição a cada 10 milissegundos (1 segundo/100 = 10 milissegundos), e as requisições excedentes são enfileiradas. Uma requisição enfileirada que aguardar mais de 30 milissegundos falhará imediatamente.
Gerencie comportamentos
Um comportamento web retorna uma resposta personalizada após uma regra ser acionada em um resource de ponto de instrumentação web. Por exemplo, uma API web pode retornar a mensagem Blocked by Sentinel após acionar uma regra de limitação.
Crie um comportamento
Clique na aba Behavior Management e em Create Behavior.
-
Na caixa de diálogo Create Behavior, configure os parâmetros descritos nas tabelas a seguir e clique em Create.
A tabela a seguir descreve os parâmetros aplicáveis quando o Resource Type está definido como Web.
|
Parâmetro |
Descrição |
Valor de exemplo |
|
Behavior Name |
O nome do comportamento. O nome pode ter até 128 caracteres e deve ser único dentro da aplicação. |
Test behavior |
|
Resource Type |
Selecione Web. |
Web |
|
**Web throttling handler Web Throttling Policy |
Define como o sistema se comporta após o acesso a uma API web acionar uma regra. Resposta personalizada: Defina o código de status HTTP, o formato do conteúdo retornado e o conteúdo retornado. A API web retorna o conteúdo personalizado após o acesso acionar uma regra. |
Custom response |
|
HTTP Status Code |
O valor padrão é 429. Este parâmetro é obrigatório quando o Web throttling handler está definido como Custom response. |
429 |
|
Returned Content-Type |
Defina o formato do conteúdo retornado como Plain text ou JSON. |
JSON string |
|
Returned HTTP Text |
Insira o conteúdo retornado após o acesso à API web acionar uma regra. Este parâmetro é obrigatório quando o Web throttling handler está definido como Custom response. |
|
A tabela a seguir descreve os parâmetros aplicáveis quando o Resource Type está definido como RPC.
|
Parâmetro |
Descrição |
Valor de exemplo |
|
Behavior Name |
O nome do comportamento. O nome pode ter até 128 caracteres e deve ser único dentro da aplicação. |
Test behavior |
|
Resource Type |
Selecione RPC. Para versões do Apache Dubbo que não suportam comportamentos personalizados, consulte Limites. |
Rpc |
|
RPC throttling handler |
Define como o sistema se comporta após o acesso a uma API RPC acionar uma regra. Custom response: Retorna um resultado personalizado. Defina o código de status HTTP, o formato do conteúdo retornado e o conteúdo retornado. A API RPC retorna o conteúdo personalizado após o acesso acionar uma regra. Custom exception: Lança uma exceção personalizada. Defina o nome da classe de exceção e o texto da exceção. O sistema retorna as informações de exceção especificadas após o acesso à API RPC acionar uma regra. |
Custom response/Custom exception |
|
Custom response class name |
Obrigatório quando o RPC throttling handler está definido como Custom response. Insira o caminho do nome da classe. Para tipos de objeto não suportados por resposta personalizada, consulte Limites. |
|
|
Custom response content (JSON) |
Obrigatório quando o RPC throttling handler está definido como Custom response. Insira o conteúdo do objeto retornado quando o acesso à API RPC acionar uma regra. |
|
|
Exception class name |
Obrigatório quando o RPC throttling handler está definido como Custom exception. Insira o caminho do nome da classe de exceção. |
|
|
Exception message |
Obrigatório quando o RPC throttling handler está definido como Custom exception. Insira o texto da exceção personalizada lançada após o acesso à API RPC acionar uma regra. |
|
O comportamento criado aparece na aba Behavior Management, onde você pode modificá-lo ou excluí-lo.
Associe um comportamento a uma regra existente
Um comportamento é associado a uma regra no assistente Configure Protection Behavior durante a criação da regra. Para alterar o comportamento de uma regra já existente, edite a regra.
Clique na aba Traffic Protection e na aba do tipo de regra.
Localize a regra e clique em Edit na coluna Actions.
Conclua os assistentes Select Protection Scenario e Configure Protection Rule.
No assistente Configure Protection Behavior, selecione o comportamento na lista suspensa Associated Behavior. Alternativamente, clique em Create Behavior para criar um comportamento e associá-lo à regra.
-
Clique em Save.
Antes de associar um comportamento, observe os seguintes pontos:
Comportamento padrão — Se não precisar de um comportamento de fallback personalizado para requisições limitadas, selecione o comportamento padrão. O tipo de API do comportamento padrão é vazio.
Vinculação existente — Ao criar uma regra, se um comportamento já estiver vinculado à API, o novo comportamento substituirá o comportamento existente da API.
Tipo de API — Ao selecionar um comportamento, o comportamento padrão será vinculado se você não selecionar um tipo de API. Após selecionar um tipo de API e vincular um comportamento do tipo correspondente, não será possível modificar o tipo.