Share via


Quickstart: Limieten voor aanvraagsnelheid instellen

Notitie

Azure Spring Apps is de nieuwe naam voor de Azure Spring Cloud-service. Hoewel de service een nieuwe naam heeft, ziet u de oude naam op sommige plaatsen terwijl we werken aan het bijwerken van assets, zoals schermopnamen, video's en diagrammen.

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: