Delen via


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

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 of header 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: