Szybki start: ustawianie limitów szybkości żądań

Uwaga

Azure Spring Apps to nowa nazwa usługi Azure Spring Cloud. Mimo że usługa ma nową nazwę, stara nazwa będzie widoczna w niektórych miejscach przez pewien czas, ponieważ pracujemy nad aktualizowaniem zasobów, takich jak zrzuty ekranu, filmy wideo i diagramy.

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

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