Share via


Schnellstart: Festlegen von Grenzwerten für Anforderungsraten

Hinweis

Azure Spring Apps ist der neue Name für den Azure Spring Cloud-Dienst. Obwohl der Dienst umbenannt wurde, wird der alte Name noch an einigen Stellen verwendet, solange wir Ressourcen wie Screenshots, Videos und Diagramme aktualisieren.

Dieser Artikel gilt für:❌ Basic/Standard ✔️ Enterprise

In diesem Schnellstart wird gezeigt, wie Sie mithilfe von Spring Cloud Gateway die Grenzwerte für Anforderungsraten im Azure Spring Apps Enterprise-Plan festlegen können.

Mit der Ratenbegrenzung können Sie Probleme vermeiden, die durch Auslastungsspitzen im Datenverkehr entstehen. Wenn Sie Grenzwerte für Anforderungsraten festlegen, kann Ihre Anwendung übermäßige Anforderungen zurückweisen. Diese Konfiguration hilft Ihnen, Fehler bei der Bandbreiteneinschränkung zu minimieren und den Durchsatz genauer vorherzusagen.

Voraussetzungen

Festlegen von Grenzwerten für Anforderungsraten

Spring Cloud Gateway enthält Routenfilter aus der Open Source-Version und mehrere weitere Routenfilter. Einer dieser Filter ist der Filter RateLimit: Benutzeranforderungen begrenzen. Der RateLimit-Filter schränkt die Anzahl der Anforderungen ein, die pro Route während eines Zeitfensters zulässig sind.

Wenn Sie eine Route definieren, können Sie den RateLimit-Filter hinzufügen, indem Sie ihn in die Liste der Filter für die Route aufnehmen. Der Filter akzeptiert vier Optionen:

  • Die Anzahl der Anforderungen, die während des Zeitfensters akzeptiert wurden.
  • Die Dauer des Zeitfensters. Dieser Wert ist standardmäßig in Millisekunden angegeben, aber Sie können ein Suffix von s, m oder h angeben, um festzulegen, dass der Wert in Sekunden, Minuten oder Stunden angegeben ist.
  • (Optional) Ein Benutzerpartitionsschlüssel. Sie können auch eine Ratenbegrenzung pro Benutzer anwenden. Das heißt, verschiedene Benutzer können ihren eigenen Durchsatz auf der Grundlage eines in der Anforderung gefundenen Bezeichners zulassen. Geben Sie an, ob der Schlüssel in einem JWT-Anspruch oder HTTP-Header mit claim- oder header-Syntax enthalten ist.
  • (Optional) Sie können die Raten nach IP-Adressen begrenzen, aber nicht in Kombination mit der Ratenbegrenzung pro Benutzer.

Das folgende Beispiel würde alle Benutzer auf zwei Anforderungen alle fünf Sekunden auf die /products-Route begrenzen:

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

Wenn Sie eine Route für verschiedene Gruppen von Benutzern verfügbar machen möchten, die jeweils durch einen eigenen client_id-HTTP-Header identifiziert werden, verwenden Sie die folgende Routendefinition:

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

Wenn der Grenzwert überschritten wird, tritt bei den Antworten der Fehler mit dem Status 429 Too Many Requests auf.

Verwenden Sie den folgenden Befehl, um den RateLimit-Filter auf die /products-Route anzuwenden:

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

Verwenden Sie die folgenden Befehle, um die URL für die /products-Route in Spring Cloud Gateway abzurufen:

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"

Stellen Sie für /products innerhalb von fünf Sekunden mehrere Anforderungen an die URL, um zu prüfen, ob bei den Anforderungen ein Fehler mit dem Status 429 Too Many Requests auftritt.

Bereinigen von Ressourcen

Falls Sie mit weiteren Schnellstartanleitungen und Tutorials fortfahren möchten, sollten Sie die Ressourcen nicht bereinigen. Wenn Sie die Ressourcen nicht mehr benötigen, löschen Sie die Ressourcengruppe. Dadurch werden die Ressourcen in der Ressourcengruppe gelöscht. Wenn Sie die Ressourcengruppe mithilfe der Azure CLI löschen möchten, verwenden Sie die folgenden Befehle:

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

Nächste Schritte

Fahren Sie mit einer der folgenden optionalen Schnellstartanleitungen fort: