<ph type="x-smartling-placeholder"></ph>
Vous consultez la documentation Apigee Edge.
Accédez à la page
Documentation sur Apigee X. En savoir plus
Apigee Edge offre la possibilité de configurer le nombre de requêtes autorisées vers un proxy d'API pendant une période donnée à l'aide des Règles de quotas.
Antimodèle
Une requête de proxy d'API peut être diffusée par un ou plusieurs composants Edge distribués appelés Processeurs de messages Si plusieurs processeurs de messages sont configurés pour l'API de diffusion requêtes, le quota sera probablement dépassé, car chaque processeur de messages conserve son propre "count" (nombre) des demandes qu'il traite.
Par exemple, imaginons que la règle de quota suivante est appliquée à un proxy d'API :
<!-- /antipatterns/examples/1-6.xml --> <Quota name="CheckTrafficQuota"> <Interval>1</Interval> <TimeUnit>hour</TimeUnit> <Allow count="100"/> </Quota>
La configuration ci-dessus devrait autoriser un total de 100 requêtes par heure.
Cependant, en pratique, lorsque plusieurs processeurs de messages diffusent les requêtes API, voici ce qui se passe :
L'image ci-dessus montre que :
- la règle de quota est configurée pour autoriser 100 requêtes par heure ;
- les requêtes adressées au proxy d'API sont diffusées par deux processeurs de messages ;
- chaque processeur de messages utilise sa propre variable de décompte du quota,
quota_count_mp1
etquota_count_mp2
, pour suivre le nombre de requêtes qu'il traite ; - chaque processeur de messages autorise 100 requêtes d'API distinctes, donc 200 requêtes sont traitées au total au lieu de 100.
Impact
Cette situation ne respecte pas l'objectif de la configuration du quota, et peut avoir des conséquences indésirables sur les serveurs de backend qui traitent les requêtes.
Les serveurs de backend peuvent :
- être extrêmement sollicités en raison d'un trafic entrant plus important que prévu ;
- arrêter de répondre aux requêtes API plus récentes, ce qui génère des erreurs 503.
Bonne pratique
Envisagez de définir l'élément <Distributed>
sur true
dans la règle de quota pour vous assurer qu'un compteur commun est utilisé pour effectuer le suivi des requêtes API sur l'ensemble des processeurs de messages.
Vous pouvez définir l'élément <Distributed>
comme montré dans l'extrait de code ci-dessous :
<!-- /antipatterns/examples/1-7.xml --> <Quota name="CheckTrafficQuota"> <Interval>1</Interval> <TimeUnit>hour</TimeUnit> <Distributed>true</Distributed> <Allow count="100"/> </Quota>