Snabbstart: Ange hastighetsbegränsningar för begäranden
Kommentar
Basic-, Standard- och Enterprise-planerna kommer att vara inaktuella från och med mitten av mars 2025, med en 3-årig pensionsperiod. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i meddelandet om azure Spring Apps-pensionering.
Standardförbrukningen och den dedikerade planen kommer att vara inaktuell från och med den 30 september 2024, med en fullständig avstängning efter sex månader. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i Migrera Azure Spring Apps Standard-förbrukning och dedikerad plan till Azure Container Apps.
Den här artikeln gäller för: ❎ Basic/Standard ✅ Enterprise
Den här snabbstarten visar hur du anger hastighetsgränser för begäranden med hjälp av Spring Cloud Gateway i Azure Spring Apps Enterprise-planen.
Med hastighetsbegränsning kan du undvika problem som uppstår med trafiktoppar. När du anger hastighetsbegränsningar för begäranden kan programmet avvisa orimliga begäranden. Den här konfigurationen hjälper dig att minimera begränsningsfel och mer exakt förutsäga dataflödet.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
- Förstå och uppfylla avsnittet Krav i Enterprise-plan på Azure Marketplace.
- Azure CLI version 2.45.0 eller senare.
- Git.
- jq
- Azure Spring Apps Enterprise-plantillägget. Använd följande kommando för att ta bort tidigare versioner och installera det senaste Enterprise-plantillägget. Om du tidigare har installerat
spring-cloud
tillägget avinstallerar du det för att undvika konfigurations- och versionsmatchningar.az extension add --upgrade --name spring az extension remove --name spring-cloud
- Slutför stegen i Skapa och distribuera appar till Azure Spring Apps med hjälp av Enterprise-planen.
Ange hastighetsgränser för begäranden
Spring Cloud Gateway innehåller routningsfilter från open source-versionen och flera routningsfilter. Ett av dessa filter är filtret RateLimit: Limiting user requests (Begränsa användarbegäranden). RateLimit-filtret begränsar antalet begäranden som tillåts per väg under en tidsperiod.
När du definierar en väg kan du lägga till RateLimit-filtret genom att inkludera det i listan med filter för vägen. Filtret accepterar fyra alternativ:
- Antalet begäranden som godkänts under fönstret.
- Varaktigheten för fönstret. Det här värdet är i millisekunder som standard, men du kan ange ett suffix med s, m eller h som anger att värdet är i sekunder, minuter eller timmar.
- (Valfritt) En användarpartitionsnyckel. Du kan också tillämpa hastighetsbegränsning per användare. Olika användare kan alltså få sitt eget dataflöde tillåtet baserat på en identifierare som finns i begäran. Ange om nyckeln finns i ett JWT-anspråk eller HTTP-huvud med
claim
ellerheader
syntax. - (Valfritt) Du kan betygsätta gränsen efter IP-adresser, men inte i kombination med hastighetsbegränsning per användare.
I följande exempel begränsas alla användare till två begäranden var femte sekund till /products
vägen:
{
"predicates": [
"Path=/products",
"Method=GET"
],
"filters": [
"StripPrefix=0",
"RateLimit=2,5s"
]
}
Om du vill exponera en väg för olika uppsättningar användare, som var och en identifieras av sitt eget client_id
HTTP-huvud, använder du följande routningsdefinition:
{
"predicates": [
"Path=/products",
"Method=GET"
],
"filters": [
"StripPrefix=0",
"RateLimit=2,5s,{header:client_id}"
]
}
När gränsen överskrids misslyckas svar med 429 Too Many Requests
status.
Använd följande kommando för att tillämpa filtret på RateLimit
/products
vägen:
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
Använd följande kommandon för att hämta URL:en för /products
vägen i 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"
Gör flera begäranden till URL:en inom en fem sekundersperiod för /products
att se begäranden misslyckas med statusen 429 Too Many Requests
.
Rensa resurser
Om du planerar att fortsätta arbeta med efterföljande snabbstarter och självstudier kanske du vill lämna dessa resurser på plats. Ta bort resursgruppen när den inte längre behövs, vilket tar bort resurserna i resursgruppen. Om du vill ta bort resursgruppen med hjälp av Azure CLI använder du följande kommandon:
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
Nästa steg
Fortsätt till någon av följande valfria snabbstarter: