Início Rápido: Definir limites de taxa de solicitação
Observação
Os planos Básico, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de desativação de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira o anúncio de desativação dos Aplicativos Spring do Azure.
O plano consumo e dedicado Standard será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira Migrar o plano dedicado e consumo Standard dos Aplicativos Spring do Azure para os Aplicativos de Contêiner do Azure.
Este artigo se aplica a: ❎ Básico/Padrão ✅ Enterprise
Este início rápido mostra como definir limites de taxa de solicitação usando o Gateway do Spring Cloud no plano Enterprise do Aplicativos Spring do Azure.
A limitação de taxa permite evitar problemas que surgem com picos no tráfego. Quando você define limites de taxa de solicitação, seu aplicativo pode rejeitar solicitações excessivas. Essa configuração ajuda você a minimizar erros de limitação e prever com mais precisão a taxa de transferência.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- Entenda e atenda a seção Requisitos do plano Enterprise no Azure Marketplace.
- A CLI do Azure, versão 2.45.0 ou superior.
- Git.
- jq
- A extensão do plano Enterprise dos Aplicativos Spring do Azure. Use o comando a seguir para remover as versões anteriores e instalar a extensão do plano Enterprise mais recente. Se você instalou a extensão
spring-cloud
anteriormente, desinstale-a para evitar incompatibilidades de configuração e de versão.az extension add --upgrade --name spring az extension remove --name spring-cloud
- Execute as etapas em Criar e implantar aplicativos no Aplicativos Spring do Azure usando o plano Enterprise.
Definir limites de taxa de solicitação
O Spring Cloud Gateway inclui filtros de rota da versão de Código aberto e vários outros filtros de rota. Um desses filtros é o filtro RateLimit: limitar solicitações do usuário. O filtro RateLimit limita o número de solicitações permitidas por rota durante uma janela de tempo.
Ao definir uma rota, você pode adicionar o filtro RateLimit incluindo-o na lista de filtros para a rota. O filtro aceita quatro opções:
- O número de solicitações aceitas durante a janela.
- A duração da janela. Esse valor está em milissegundos por padrão, mas você pode especificar um sufixo de s, m ou h para indicar que o valor está em segundos, minutos ou horas.
- (Opcional) Uma chave de partição do usuário. Você também pode aplicar a limitação de taxa por usuário. Ou seja, usuários diferentes podem ter sua própria taxa de transferência permitida com base em um identificador encontrado na solicitação. Indique se a chave está em uma declaração JWT ou cabeçalho HTTP com sintaxe
claim
ouheader
. - (Opcional) Você pode classificar o limite por endereços IP, mas não em combinação com a limitação de taxa por usuário.
O exemplo a seguir limitaria todos os usuários a duas solicitações a cada cinco segundos à rota /products
:
{
"predicates": [
"Path=/products",
"Method=GET"
],
"filters": [
"StripPrefix=0",
"RateLimit=2,5s"
]
}
Se você quiser expor uma rota para diferentes conjuntos de usuários, cada um identificado pelo próprio cabeçalho HTTP client_id
, use a seguinte definição de rota:
{
"predicates": [
"Path=/products",
"Method=GET"
],
"filters": [
"StripPrefix=0",
"RateLimit=2,5s,{header:client_id}"
]
}
Quando o limite for excedido, as respostas falharão com o status 429 Too Many Requests
.
Use o seguinte comando para aplicar o filtro RateLimit
à rota /products
:
az spring gateway route-config update \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-service-instance-name> \
--name catalog-routes \
--app-name catalog-service \
--routes-file azure-spring-apps-enterprise/resources/json/routes/catalog-service_rate-limit.json
Use os seguintes comandos para recuperar a URL da rota /products
no Spring Cloud Gateway:
export GATEWAY_URL=$(az spring gateway show \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')
echo "https://${GATEWAY_URL}/products"
Faça várias solicitações para a URL em /products
um período de cinco segundos para ver as solicitações falharem com um status 429 Too Many Requests
.
Limpar os recursos
Se planejar continuar trabalhando com os tutoriais e inícios rápidos subsequentes, deixe esses recursos onde estão. Quando não for mais necessário, exclua o grupo de recursos, que excluirá os recursos no grupo de recursos. Para excluir o grupo de recursos usando a CLI do Azure, use os seguintes comandos:
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
Próximas etapas
Continue com qualquer um dos seguintes guias de início rápido opcionais: