Szybki start: ustawianie limitów szybkości żądań
Uwaga
Plany Podstawowa, Standardowa i Enterprise zostaną wycofane od połowy marca 2025 r. z 3-letnim okresem emerytalnym. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.
Zużycie standardowe i dedykowany plan zostaną wycofane od 30 września 2024 r. z całkowitym zamknięciem po sześciu miesiącach. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz Migrowanie użycia usługi Azure Spring Apps w warstwie Standardowa i dedykowanego planu do usługi Azure Container Apps.
Ten artykuł dotyczy:❌ Podstawowa/Standardowa ✔️ Enterprise
W tym przewodniku Szybki start pokazano, jak ustawić limity szybkości żądań przy użyciu usługi Spring Cloud Gateway w planie Azure Spring Apps Enterprise.
Ograniczanie szybkości umożliwia uniknięcie problemów, które pojawiają się wraz ze wzrostem ruchu. Po ustawieniu limitów szybkości żądań aplikacja może odrzucać nadmierne żądania. Ta konfiguracja pomaga zminimalizować błędy ograniczania przepustowości i dokładniej przewidywać przepływność.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Zapoznaj się z sekcją Wymagania planu Enterprise w witrynie Azure Marketplace i spełnij je.
- Interfejs wiersza polecenia platformy Azure w wersji 2.45.0 lub nowszej.
- Git.
- jq
- Rozszerzenie planu Usługi Azure Spring Apps Enterprise. Użyj następującego polecenia, aby usunąć poprzednie wersje i zainstalować najnowsze rozszerzenie planu Enterprise. Jeśli wcześniej zainstalowano
spring-cloud
rozszerzenie, odinstaluj je, aby uniknąć niezgodności konfiguracji i wersji.az extension add --upgrade --name spring az extension remove --name spring-cloud
- Wykonaj kroki opisane w temacie Kompilowanie i wdrażanie aplikacji w usłudze Azure Spring Apps przy użyciu planu Enterprise.
Ustawianie limitów szybkości żądań
Usługa Spring Cloud Gateway zawiera filtry tras z wersji open source i kilka innych filtrów tras. Jednym z tych filtrów jest filtr RateLimit: Ograniczanie żądań użytkowników. Filtr RateLimit ogranicza liczbę żądań dozwolonych na trasę w przedziale czasu.
Podczas definiowania trasy można dodać filtr RateLimit, dołączając go do listy filtrów dla trasy. Filtr akceptuje cztery opcje:
- Liczba żądań akceptowanych w oknie.
- Czas trwania okna. Ta wartość jest domyślnie wyrażona w milisekundach, ale można określić sufiks s, m lub h , aby wskazać, że wartość jest wyrażona w sekundach, minutach lub godzinach.
- (Opcjonalnie) Klucz partycji użytkownika. Można również zastosować ograniczanie szybkości na użytkownika. Oznacza to, że różni użytkownicy mogą mieć dozwoloną własną przepływność na podstawie identyfikatora znalezionego w żądaniu. Określ, czy klucz znajduje się w oświadczeniu JWT, czy nagłówku HTTP z
claim
lubheader
składnią. - (Opcjonalnie) Limit szybkości można ograniczyć według adresów IP, ale nie w połączeniu z ograniczaniem szybkości na użytkownika.
Poniższy przykład ogranicza wszystkich użytkowników do dwóch żądań co pięć sekund do /products
trasy:
{
"predicates": [
"Path=/products",
"Method=GET"
],
"filters": [
"StripPrefix=0",
"RateLimit=2,5s"
]
}
Jeśli chcesz uwidocznić trasę dla różnych zestawów użytkowników, każdy z nich zidentyfikowany przez własny client_id
nagłówek HTTP, użyj następującej definicji trasy:
{
"predicates": [
"Path=/products",
"Method=GET"
],
"filters": [
"StripPrefix=0",
"RateLimit=2,5s,{header:client_id}"
]
}
Po przekroczeniu limitu odpowiedzi kończą się niepowodzeniem ze stanem 429 Too Many Requests
.
Użyj następującego polecenia, aby zastosować RateLimit
filtr do /products
trasy:
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
Użyj następujących poleceń, aby pobrać adres URL /products
trasy w usłudze 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"
Wykonaj kilka żądań do adresu URL w /products
ciągu pięciu sekund, aby zobaczyć, że żądania kończą się niepowodzeniem ze stanem 429 Too Many Requests
.
Czyszczenie zasobów
Jeśli planujesz kontynuować pracę z kolejnymi przewodnikami Szybki start i samouczkami, możesz pozostawić te zasoby na miejscu. Gdy grupa zasobów nie będzie już potrzebna, usuń grupę zasobów, która usuwa zasoby w grupie zasobów. Aby usunąć grupę zasobów przy użyciu interfejsu wiersza polecenia platformy Azure, użyj następujących poleceń:
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
Następne kroki
Przejdź do dowolnego z następujących opcjonalnych przewodników Szybki start: