Démarrage rapide : Définir des limites de taux de requêtes
Remarque
Les plans Essentiel, Standard et Entreprise seront déconseillés à compter de la mi-mars 2025, avec une période de mise hors service de 3 ans. Nous vous recommandons de passer à Azure Container Apps. Pour plus d’informations, consultez l’annonce de mise hors service d’Azure Spring Apps.
Le plan de consommation standard et dédiée sera déconseillé à compter du 30 septembre 2024, avec un arrêt complet après six mois. Nous vous recommandons de passer à Azure Container Apps. Pour plus d’informations, consultez Migrer le plan de consommation standard et dédiée Azure Spring Apps vers Azure Container Apps.
Cet article s’applique à : ❎ Essentiel/Standard ✅ Entreprise
Ce démarrage rapide vous explique comment définir des limites de taux de requêtes à l’aide de Spring Cloud Gateway sur le plan Enterprise d’Azure Spring Apps.
La limitation du taux vous permet d’éviter les problèmes qui surviennent avec des pics de trafic. Lorsque vous définissez des limites de taux de requêtes, votre application peut rejeter des requêtes excessives. Cette configuration vous permet de réduire les erreurs de limitation et de prédire plus précisément le débit.
Prérequis
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Comprendre la section Exigences du plan niveau Enterprise dans la place de marché Azure et y répondre.
- Azure CLI version 2.45.0 ou ultérieure.
- Git.
- jq
- L’extension de plan Enterprise d’Azure Spring Apps. Utilisez la commande suivante pour supprimer les versions précédentes et installer l’extension de plan Enterprise la plus récente. Si vous avez déjà installé l’extension
spring-cloud
, désinstallez-la pour éviter les incompatibilités de configuration et de version.az extension add --upgrade --name spring az extension remove --name spring-cloud
- Effectuez les étapes indiquées dans Créer et déployer des applications sur Azure Spring Apps à l’aide du plan Enterprise.
Définir des limites de taux de demandes
Spring Cloud Gateway inclut des filtres d’itinéraire à partir de la version Open Source et plusieurs filtres d’itinéraire supplémentaires. L’un de ces filtres est RateLimit : limitation du filtre des requêtes utilisateurs. Le filtre RateLimit limite le nombre de requêtes autorisées par itinéraire pendant une fenêtre de temps.
Lorsque vous définissez un itinéraire, vous pouvez ajouter le filtre RateLimit en l’incluant dans la liste des filtres de l’itinéraire. Le filtre accepte quatre options :
- Nombre de requêtes acceptées pendant la fenêtre.
- Durée de la fenêtre. Cette valeur est exprimée en millisecondes par défaut, mais vous pouvez spécifier un suffixe s, m ou h pour indiquer que la valeur est exprimée en secondes, en minutes ou en heures.
- (Facultatif) Clé de partition utilisateur. Vous pouvez également appliquer la limitation du taux par utilisateur. Autrement dit, différents utilisateurs peuvent avoir leur propre débit autorisé en fonction d’un identificateur trouvé dans la requête. Indiquez si la clé se trouve dans une revendication JWT ou un en-tête HTTP avec la syntaxe
claim
ouheader
. - (Facultatif) Vous pouvez limiter le taux par adresses IP, mais pas en combinaison avec la limitation du taux par utilisateur.
L’exemple suivant limite tous les utilisateurs à deux requêtes toutes les cinq secondes vers l’itinéraire /products
:
{
"predicates": [
"Path=/products",
"Method=GET"
],
"filters": [
"StripPrefix=0",
"RateLimit=2,5s"
]
}
Si vous souhaitez exposer un itinéraire pour différents ensembles d’utilisateurs, chacun identifié par son propre en-tête HTTP client_id
, utilisez la définition d’itinéraire suivante :
{
"predicates": [
"Path=/products",
"Method=GET"
],
"filters": [
"StripPrefix=0",
"RateLimit=2,5s,{header:client_id}"
]
}
Lorsque la limite est dépassée, les réponses échouent avec l’état 429 Too Many Requests
.
Utilisez la commande suivante pour appliquer le filtre RateLimit
à l’itinéraire /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
Utilisez les commandes suivantes pour récupérer l’URL de l’itinéraire /products
dans 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"
Effectuez plusieurs requêtes vers l’URL de /products
pendant une période de cinq secondes pour voir les requêtes qui échouent avec un état 429 Too Many Requests
.
Nettoyer les ressources
Si vous prévoyez d’utiliser d’autres guides de démarrage rapide et tutoriels, vous pouvez conserver ces ressources. Quand vous n’en avez plus besoin, supprimez le groupe de ressources, ce qui supprime également les ressources qu’il contient. Pour supprimer le groupe de ressources à l’aide d’Azure CLI, utilisez les commandes suivantes :
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
Étapes suivantes
Passez à l’un des guides de démarrage rapide facultatifs suivants :