La limitation protège les services backend contre les requêtes excessives et prévient les pannes en cascade. Cloud-native API Gateway prend en charge des politiques de limitation au niveau des routes qui plafonnent le volume de requêtes dans une fenêtre temporelle spécifiée.
Configurer une politique de limitation
Le seuil de limitation que vous configurez s'applique au niveau de la passerelle. Pour calculer le seuil par nœud de passerelle, utilisez la formule suivante : Seuil de limitation au niveau de la passerelle / Nombre de nœuds. Si le résultat est décimal, arrondissez-le à l'entier supérieur. Par exemple, si le nombre de requêtes par seconde (QPS) d'une route de démonstration est de 1001 et que votre passerelle dispose de deux nœuds, la limite QPS pour cette route sur chaque nœud est de 501.
-
Vous pouvez configurer une politique de limitation au sein ou en dehors d'une instance Cloud-native API Gateway.
External API
Connectez-vous à la console Cloud-native API Gateway. Dans le volet de navigation de gauche, cliquez sur API. Dans la barre de navigation supérieure, sélectionnez une région.
Cliquez sur l'API cible. Dans la liste déroulante, sélectionnez l'instance pour laquelle vous souhaitez configurer la limitation, ou sélectionnez All Instances. Dans la liste déroulante des instances située dans la barre de navigation supérieure, sélectionnez l'instance cible.
Dans la section Routes, cliquez sur la route cible.
Internal API
Connectez-vous à la console Cloud-native API Gateway. Dans le volet de navigation de gauche, cliquez sur Instance. Dans la barre de navigation supérieure, sélectionnez une région.
Sur la page Instance, cliquez sur l'ID de l'instance de passerelle cible. Dans le volet de navigation de gauche, cliquez sur API, puis sur l'API cible.
Dans la section Routes, cliquez sur la route cible.
Cliquez sur l'onglet Configure Policy, puis cliquez sur Enable Policy/Plug-in dans la section Inbound Processing.
-
Ajoutez une politique de limitation. Les options disponibles sont Traffic Control, Concurrency Control et Circuit Breaking.
Traffic Throttling
Les règles de limitation surveillent le nombre de QPS d'une route et bloquent immédiatement le trafic lorsque le seuil est atteint, empêchant ainsi les pannes des services backend dues aux pics de trafic.
Cliquez sur la carte Traffic Control. Dans le panneau Add Policy :Traffic Control, configurez les paramètres, puis cliquez sur Add.
Parameter
Description
Enable or Not
Activez cet interrupteur pour activer la politique de contrôle du trafic.
Overall QPS Threshold
Le Overall QPS Threshold.
Web Fallback Behavior
Définissez le paramètre Web Fallback Behavior sur Return Specific Content ou Redirect to Specified Page.
Si vous définissez le paramètre Web Fallback Behavior sur Return Specific Content :
HTTP Status Code
Le HTTP Status Code à renvoyer. La valeur par défaut est 429.
Type of Returned Content
Le Type of Returned Content du corps de la réponse. Vous pouvez sélectionner Regular Text ou JSON.
HTTP Text
Le texte à renvoyer.
Si vous définissez le paramètre Web Fallback Behavior sur Redirect to Specified Page :
Redirect URL
L'Redirect URL.
Concurrency control
Les règles de concurrence suivent le nombre total de requêtes en cours de traitement par la passerelle et bloquent le trafic lorsque ce nombre atteint le seuil spécifié, protégeant ainsi la disponibilité des services backend lors de scénarios à forte concurrence.
Cliquez sur la carte Concurrency Control. Dans le panneau Add Policy : Concurrency Control, configurez les paramètres, puis cliquez sur Add.
Parameter
Description
Enable or Not
Activez cet interrupteur pour activer la règle de concurrence.
Overall Concurrency Threshold
Le Overall Concurrency Threshold.
Web Fallback Behavior
Définissez le paramètre Web Fallback Behavior sur Return Specific Content ou Redirect to Specified Page.
Si vous définissez le paramètre Web Fallback Behavior sur Return Specific Content :
HTTP Status Code
Le HTTP Status Code à renvoyer. La valeur par défaut est 429.
Type of Returned Content
Le Type of Returned Content du corps de la réponse. Vous pouvez sélectionner Regular Text ou JSON.
HTTP Text
Le corps de la réponse à renvoyer.
Si vous définissez le paramètre Web Fallback Behavior sur Redirect to Specified Page :
Redirect URL
L'Redirect URL.
Circuit breaking
Les règles de disjoncteur se déclenchent lorsque le temps de réponse (RT) ou le taux d'exceptions sur une route atteint un seuil spécifié. Une fois déclenché, le disjoncteur rejette toutes les requêtes sur cette route pendant une durée configurée afin de protéger les services backend, puis reprend automatiquement les appels.
Cliquez sur la carte Circuit Breaking. Dans le panneau Add Policy : Circuit Breaking, configurez les paramètres, puis cliquez sur Add.
Parameter
Description
Enable or Not
Activez cet interrupteur pour activer la règle de disjoncteur.
Statistical Window Duration
La durée de la fenêtre temporelle. Valeurs valides : de 1 seconde à 120 minutes.
Minimum Number of Requests
Le nombre minimal de requêtes requis pour déclencher le disjoncteur. Si le nombre de requêtes dans la fenêtre temporelle actuelle est inférieur à cette valeur, le disjoncteur ne se déclenche pas, même si la condition de seuil est remplie.
Threshold Type
La métrique utilisée pour déclencher le disjoncteur. Vous pouvez sélectionner Slow Call Ratio (%) ou Exception Ratio (%).
-
Si vous sélectionnez Slow Call Ratio (%), vous devez définir un Slow Call RT, qui correspond au temps de réponse maximal. Une requête est considérée comme lente si son temps de réponse est supérieur à cette valeur. Une fois la règle activée, si le nombre de requêtes dans une fenêtre statistique dépasse le nombre minimal de requêtes et que le ratio d'appels lents dépasse le seuil spécifié, les requêtes sont rejetées pendant la durée de la période de disjonction. Après cette durée, le disjoncteur passe à un état de récupération par sondage. Si le temps de réponse de la requête suivante est inférieur au Slow Call RT spécifié, le circuit se ferme. Sinon, le circuit s'ouvre à nouveau.
-
Si vous sélectionnez Exception Ratio (%), vous devez définir le ratio d'exceptions qui déclenche le disjoncteur. Une fois la règle activée, si le nombre d'exceptions métier dans une fenêtre statistique dépasse le nombre minimal de requêtes et que le ratio d'exceptions dépasse le seuil, les requêtes sont rejetées pendant la durée de la période de disjonction.
Slow Call RT
Le Slow Call RT autorisé (temps de réponse maximal).
Circuit Breaking Ratio Threshold
Le seuil en pourcentage pour les appels lents. Le disjoncteur se déclenche lorsque ce seuil est atteint ou dépassé. Valeurs valides : de 0 à 100 (%).
Circuit Breaking Duration (s)
La durée pendant laquelle le disjoncteur reste actif. Pendant cette période, toutes les requêtes vers la route sont rejetées.
Web Fallback Behavior
Sélectionnez le paramètre Web Fallback Behavior comme Return Specific Content ou Redirect to Specified Page.
Si vous définissez le paramètre Web Fallback Behavior sur Return Specific Content :
HTTP Status Code
Le HTTP Status Code à renvoyer. La valeur par défaut est 429.
Type of Returned Content
Le Type of Returned Content du corps de la réponse. Vous pouvez sélectionner Regular Text ou JSON.
HTTP Text
Le corps de la réponse à renvoyer.
Si vous définissez le paramètre Web Fallback Behavior sur Redirect to Specified Page :
Redirect URL
L'Redirect URL.
-
Vérifier les résultats
Exécutez la commande suivante pour envoyer des requêtes de test :
curl -I http://121.196.XX.XX/demo/item/list //The ingress IP address of the gateway.
-
Une réponse similaire à la suivante est renvoyée si la politique de limitation n'est pas activée :
HTTP/1.1 200 OK x-content-type-options: nosniff x-xss-protection: 1; mode=block cache-control: no-cache, no-store, max-age=0, must-revalidate pragma: no-cache expires: 0 x-frame-options: DENY content-type: application/json content-length: 86 date: Mon, 29 Nov 2021 08:28:00 GMT x-envoy-upstream-service-time: 4 server: istio-envoy -
Si la politique de limitation est activée, une réponse similaire à la suivante est renvoyée avec le code d'état HTTP 429.
HTTP/1.1 429 Too Many Requests x-local-rate-limit: true content-length: 18 content-type: text/plain date: Mon, 29 Nov 2021 08:28:01 GMT server: istio-envoy