Rychlý start: Nastavení limitů četnosti požadavků

Poznámka:

Azure Spring Apps je nový název služby Azure Spring Cloud. Přestože má služba nový název, na některých místech uvidíte starý název, protože pracujeme na aktualizaci prostředků, jako jsou snímky obrazovky, videa a diagramy.

Tento článek se vztahuje na:❌ Basic/Standard ✔️ Enterprise

V tomto rychlém startu se dozvíte, jak nastavit limity četnosti požadavků pomocí brány Spring Cloud v plánu Azure Spring Apps Enterprise.

Omezování rychlosti umožňuje vyhnout se problémům, ke kterým dochází při špičkách provozu. Když nastavíte limity četnosti požadavků, vaše aplikace může odmítnout nadměrné požadavky. Tato konfigurace vám pomůže minimalizovat chyby omezování a přesněji předpovědět propustnost.

Požadavky

Nastavení limitů četnosti požadavků

Brána Spring Cloud zahrnuje filtry tras z open source verze a několik dalších filtrů tras. Jedním z těchtofiltrůch Filtr RateLimit omezuje počet požadavků povolených na trasu během časového intervalu.

Při definování trasy můžete přidat filtr RateLimit tak, že ho zahrnete do seznamu filtrů pro trasu. Filtr přijímá čtyři možnosti:

  • Počet žádostí přijatých během okna
  • Doba trvání okna. Tato hodnota je ve výchozím nastavení v milisekundách, ale můžete zadat příponu s, m nebo h , která označuje, že hodnota je v sekundách, minutách nebo hodinách.
  • (Volitelné) Klíč oddílu uživatele. Můžete také použít omezení rychlosti pro jednotlivé uživatele. To znamená, že různí uživatelé můžou mít povolenou vlastní propustnost na základě identifikátoru nalezeného v požadavku. Určuje, jestli se klíč nachází v deklaraci JWT, nebo v hlavičce HTTP s claim syntaxí.header
  • (Volitelné) Omezení četnosti můžete omezit podle IP adres, ale ne v kombinaci s omezováním rychlosti na uživatele.

Následující příklad by omezil všechny uživatele na dvě požadavky každých pět sekund na trasu /products :

{
    "predicates": [
      "Path=/products",
      "Method=GET"
    ],
    "filters": [
      "StripPrefix=0",
      "RateLimit=2,5s"
    ]
}

Pokud chcete zveřejnit trasu pro různé sady uživatelů, každá trasa identifikovaná vlastní client_id hlavičkou HTTP, použijte následující definici trasy:

{
    "predicates": [
      "Path=/products",
      "Method=GET"
    ],
    "filters": [
      "StripPrefix=0",
      "RateLimit=2,5s,{header:client_id}"
    ]
}

Když dojde k překročení limitu, odpovědi selžou se stavem 429 Too Many Requests .

Pomocí následujícího příkazu použijte RateLimit filtr na trasu /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

Pomocí následujících příkazů načtěte adresu URL trasy /products v bráně Spring Cloud:

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"

Proveďte několik požadavků na adresu URL během /products pětisekundového období, abyste viděli, že žádosti selžou se stavem 429 Too Many Requests.

Vyčištění prostředků

Pokud chcete pokračovat v práci s dalšími rychlými starty a kurzy, můžete tyto prostředky ponechat na místě. Pokud už ji nepotřebujete, odstraňte skupinu prostředků, která odstraní prostředky ve skupině prostředků. Pokud chcete odstranit skupinu prostředků pomocí Azure CLI, použijte následující příkazy:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Další kroky

Pokračujte k některému z následujících volitelných rychlých startů: