Sdílet prostřednictvím


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

Poznámka:

Plány Basic, Standarda Enterprise vstoupily do důchodového období 17. března 2025. Další informace najdete v oznámení o vyřazení Azure Spring Apps.

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ěchto filtrů je RateLimit: Filtr omezující uživatelské požadavky. 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, mnebo h určit, ž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 během pěti sekund několik požadavků na adresu URL /products, abyste viděli, že požadavky selžou s chybovým stavem 429 Too Many Requests.

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

Pokud chcete pokračovat v práci s dalšími rychlými úvody a kurzy, můžete tyto prostředky ponechat beze změny. Pokud ji již nepotřebujete, odstraňte skupinu prostředků, čímž odstraníte všechny prostředky v ní obsažené. 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ů: