Tous les produits
Search
Centre de documentation

Alibaba Cloud Service Mesh:Limitation du débit

Dernière mise à jour :Sep 21, 2026

La limitation du débit permet un contrôle précis du trafic pour gérer les pics de charge, la surcharge des services, l'épuisement des ressources et les attaques malveillantes. Elle protège la stabilité des services backend tout en réduisant les coûts et en améliorant l'expérience utilisateur.

Concepts de la limitation du débit

La limitation du débit restreint le nombre de requêtes envoyées à un service sur une période donnée, par exemple 300 requêtes par minute ou 10 requêtes par seconde. Cela empêche la saturation d'un service par un excès de requêtes provenant d'une adresse IP client spécifique ou de clients du monde entier.

Par exemple, si vous limitez le nombre de requêtes envoyées à un service à 300 par minute, la 301e requête est refusée. Le code d'état HTTP 429, indiquant un nombre excessif de requêtes, est alors renvoyé.

Modes de limitation du débit

Les proxies Envoy prennent en charge deux modes de limitation : la limitation locale et la limitation globale. La limitation locale restreint le taux de requêtes de chaque instance de service. La limitation globale utilise un service gRPC global pour appliquer des limites de débit sur l'ensemble de l'instance Service Mesh (ASM). Combinez les deux modes pour appliquer différents niveaux de limitation.

Mode

Description

Références

Limitation locale

  • La limitation locale se configure pour chaque processus Envoy. Un processus Envoy correspond à un pod dans lequel un proxy Envoy est injecté. Cette configuration est plus simple que celle de la limitation globale et ne nécessite aucun composant supplémentaire. Si vous configurez à la fois la limitation locale et la limitation globale pour une instance ASM, la limite de débit locale s'applique en premier. Si la limite locale n'est pas atteinte, la limite de débit globale s'applique. Exemples :

    • Supposons que la limitation locale restreigne le nombre de requêtes d'un client spécifique à 50 par minute, tandis que la limite globale est de 60 requêtes par minute. Lorsque le nombre de requêtes du client dépasse 50, les requêtes excédentaires sont refusées, même si le nombre total de requêtes n'a pas atteint la limite globale.

    • Supposons que la limitation locale restreigne le nombre de requêtes d'un client spécifique à 50 par minute, et que la limite globale soit de 40 requêtes par minute. Lorsque le nombre de requêtes du client dépasse 40, les requêtes excédentaires sont refusées en raison de la limitation globale, même si le nombre de requêtes n'a pas atteint la limite locale.

  • Si le pod sur lequel la limite de limitation locale est configurée possède plusieurs réplicas, chacun de ces réplicas dispose de sa propre limite. Autrement dit, les requêtes peuvent être limitées sur un réplica mais pas sur un autre.

Configurer la limitation locale dans le Traffic Management Center

Limitation globale ou distribuée

  • La limitation globale restreint le nombre de requêtes envoyées à plusieurs services. Dans ce mode, tous les services d'un cluster partagent la même configuration de limitation. Généralement, la limitation globale nécessite un composant externe, tel qu'une base de données Redis.

  • La limitation globale est généralement utilisée dans les scénarios où de nombreux clients envoient des requêtes à un nombre réduit de services. Dans ce cas, les requêtes peuvent interrompre les services. La limitation globale aide à prévenir les pannes en cascade. Par exemple, configurez une limitation globale sur une passerelle d'entrée pour limiter le nombre total de requêtes envoyées à une instance ASM. Ensuite, configurez une limitation locale pour restreindre le nombre de requêtes envoyées à des services spécifiques au sein de l'instance ASM.

Utiliser ASMGlobalRateLimiter pour configurer la limitation globale du débit pour le trafic entrant vers les services d'application

Fonctionnement de la limitation locale

Un proxy Envoy utilise l'algorithme du seau de jetons (token bucket) pour mettre en œuvre la limitation locale. Des jetons sont ajoutés à un seau à un rythme constant. Chaque requête entrante consomme un jeton. Lorsque le seau est vide, les requêtes suivantes sont refusées. Spécifiez généralement les paramètres suivants :

  • L'intervalle de remplissage du seau

  • Le nombre de jetons ajoutés au seau à chaque intervalle

Par défaut, un proxy Envoy renvoie le code d'état HTTP 429 lorsqu'une requête est refusée et que l'en-tête x-envoy-ratelimited est défini. Vous pouvez personnaliser le code d'état HTTP et l'en-tête de réponse.

Tenez compte des concepts suivants lors de l'utilisation de la fonctionnalité de limitation :

  • http_filter_enabled : indique le pourcentage de requêtes pour lesquelles la limite de débit locale est vérifiée mais non appliquée.

  • http_filter_enforcing : indique le pourcentage de requêtes sur lesquelles la limite de débit locale est appliquée ou imposée.

Définissez les valeurs sous forme de pourcentages. Par exemple, définissez http_filter_enabled à 10 % des requêtes et http_filter_enforcing à 5 % des requêtes. De cette manière, vous pouvez tester l'effet de la limitation avant de l'appliquer à toutes les requêtes.

Fonctionnement de la limitation globale

La limitation globale contrôle les taux de requêtes sur l'ensemble d'une instance ASM en utilisant le service de limitation de débit Envoy. Le service de limitation de débit traite le trafic de manière centralisée et applique des limites de débit basées sur des règles et des quotas prédéfinis.

image

La configuration de la limitation globale comprend deux parties : le filtre rate_limits d'Envoy et la configuration du service de limitation de débit.

  • Le filtre rate_limits contient une liste d'actions. Un proxy Envoy tente de faire correspondre chaque requête avec chaque action du filtre rate_limits. Un descripteur est généré pour chaque action. Un descripteur est composé d'un ensemble d'entrées de descripteur correspondant à une action. Chaque entrée de descripteur est une paire clé-valeur, telle que "descriptor-key-1": "descriptor-value-1" et "descriptor-key-2": "descriptor-value-2". Pour plus d'informations, consultez config-http-filters-rate-limit.

  • La configuration du service de limitation de débit est mise en correspondance avec l'entrée de descripteur générée pour chaque requête. La configuration du service de limitation de débit spécifie la limite de débit pour un ensemble spécifique d'entrées de descripteur. Le service de limitation de débit interagit avec le cache Redis pour déterminer s'il convient de limiter le débit des requêtes et envoie la décision de limitation au proxy Envoy.

Ensemble, le filtre rate_limits et le service de limitation de débit mettent en œuvre la limitation globale. Le filtre génère un descripteur basé sur l'action configurée et l'envoie au service de limitation de débit, qui détermine la limite applicable et renvoie une réponse de limitation. Ce mécanisme vous offre un contrôle total sur les taux de requêtes et protège les services backend contre les pics de trafic.