Quickstart: Limieten voor aanvraagsnelheid instellen
Notitie
De Basic-, Standard- en Enterprise-abonnementen worden afgeschaft vanaf medio maart 2025, met een pensioenperiode van 3 jaar. We raden u aan om over te stappen naar Azure Container Apps. Zie de aankondiging over buitengebruikstelling van Azure Spring Apps voor meer informatie.
Het standaardverbruik en het speciale abonnement worden vanaf 30 september 2024 afgeschaft, met een volledige afsluiting na zes maanden. We raden u aan om over te stappen naar Azure Container Apps. Zie Azure Spring Apps Standard-verbruik en toegewezen abonnement migreren naar Azure Container Apps voor meer informatie.
Dit artikel is van toepassing op:❌ Basic/Standard ✔️ Enterprise
In deze quickstart ziet u hoe u aanvraagfrequentielimieten instelt met behulp van Spring Cloud Gateway in het Azure Spring Apps Enterprise-abonnement.
Met snelheidsbeperking kunt u problemen voorkomen die zich voordoen met pieken in het verkeer. Wanneer u aanvraagfrequentielimieten instelt, kan uw toepassing overmatige aanvragen afwijzen. Met deze configuratie kunt u beperkingsfouten minimaliseren en de doorvoer nauwkeuriger voorspellen.
Vereisten
- Een Azure-account met een actief abonnement. Gratis een account maken
- Inzicht in en voldoen aan de sectie Vereisten van het Enterprise-plan in Azure Marketplace.
- De Azure CLI versie 2.45.0 of hoger.
- Git.
- jq
- De Azure Spring Apps Enterprise-abonnementsextensie. Gebruik de volgende opdracht om eerdere versies te verwijderen en de nieuwste Enterprise-abonnementsextensie te installeren. Als u de extensie eerder hebt geïnstalleerd, verwijdert u deze
spring-cloud
om te voorkomen dat de configuratie en versie niet overeenkomen.az extension add --upgrade --name spring az extension remove --name spring-cloud
- Voer de stappen in Het bouwen en implementeren van apps in Azure Spring Apps uit met behulp van het Enterprise-abonnement.
Frequentielimieten voor aanvragen instellen
Spring Cloud Gateway bevat routefilters uit de opensource-versie en een aantal meer routefilters. Een van deze filters is het filter RateLimit: Gebruikersaanvragen beperken. Het RateLimit-filter beperkt het aantal aanvragen dat per route is toegestaan tijdens een tijdvenster.
Wanneer u een route definieert, kunt u het RateLimit-filter toevoegen door deze op te geven in de lijst met filters voor de route. Het filter accepteert vier opties:
- Het aantal aanvragen dat tijdens het venster is geaccepteerd.
- De duur van het venster. Deze waarde is standaard in milliseconden, maar u kunt een achtervoegsel van s, m of h opgeven om aan te geven dat de waarde in seconden, minuten of uren is.
- (Optioneel) Een partitiesleutel van een gebruiker. U kunt ook frequentielimieten per gebruiker toepassen. Dat wil zeggen dat verschillende gebruikers hun eigen doorvoer kunnen toestaan op basis van een id die in de aanvraag is gevonden. Geef aan of de sleutel zich in een JWT-claim of HTTP-header bevindt met
claim
ofheader
syntaxis. - (Optioneel) U kunt een frequentielimiet per IP-adres, maar niet in combinatie met snelheidsbeperking per gebruiker.
In het volgende voorbeeld worden alle gebruikers beperkt tot twee aanvragen om de vijf seconden naar de /products
route:
{
"predicates": [
"Path=/products",
"Method=GET"
],
"filters": [
"StripPrefix=0",
"RateLimit=2,5s"
]
}
Als u een route beschikbaar wilt maken voor verschillende sets gebruikers, gebruikt u de volgende routedefinitie die wordt geïdentificeerd door een eigen client_id
HTTP-header:
{
"predicates": [
"Path=/products",
"Method=GET"
],
"filters": [
"StripPrefix=0",
"RateLimit=2,5s,{header:client_id}"
]
}
Wanneer de limiet wordt overschreden, mislukken antwoorden met 429 Too Many Requests
de status.
Gebruik de volgende opdracht om het RateLimit
filter toe te passen op de /products
route:
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
Gebruik de volgende opdrachten om de URL voor de /products
route op te halen in 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"
Maak binnen een periode van vijf seconden verschillende aanvragen naar de URL /products
om te zien dat aanvragen mislukken met een status 429 Too Many Requests
.
Resources opschonen
Als u van plan bent om verder te gaan met volgende snelstarts en zelfstudies, kunt u deze resources het beste intact laten. Als u de resourcegroep niet meer nodig hebt, verwijdert u deze. Hierdoor worden ook de resources in de resourcegroep verwijderd. Als u de resourcegroep wilt verwijderen met behulp van Azure CLI, gebruikt u de volgende opdrachten:
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
Volgende stappen
Ga door naar een van de volgende optionele quickstarts: