Retour au blog
Performances & Benchmarks · 10 min de lecture

Rate limiter et circuit breaker dans un API Gateway : quel coût en latence ?

Affane Daylami · Fondateur· 24 août 2026

Un rate limiter mal placé peut ajouter des dizaines de millisecondes à chaque requête. Bien conçu, il en ajoute moins d'une. Le gateway Rust d'Aurabase (aura-gateway) implémente les deux mécanismes — rate limiting distribué et circuit breaker — au cœur de sa pile de middlewares. Voici ce que dit la littérature technique, et ce que le code Aurabase fait précisément.

L'essentiel

Un rate limiter distribué correctement implémenté (comptage atomique, cache local en repli) ajoute typiquement moins d'une milliseconde par requête selon plusieurs sources spécialisées. Le gateway Aurabase suit exactement ce patron : la crate governor pour l'anti-DoS local, un script Lua Redis atomique pour le comptage distribué entre instances, un cache moka en repli si Redis est indisponible. Le circuit breaker, lui, réduit la latence perçue en cas de panne plutôt que d'en ajouter — il court-circuite l'attente d'un timeout complet. Aucun chiffre de latence Aurabase n'est publié à ce jour : voici pourquoi, et comment le mécanisme fonctionne réellement.

#
Pourquoi ces deux middlewares

Anti-DoS et anti-panne en cascade, deux problèmes distincts

Le rate limiter protège votre backend contre un volume de trafic excessif, légitime ou non — il répond à la question « cet appelant a-t-il le droit d'envoyer cette requête maintenant ? ». Le circuit breaker protège votre backend contre un service en aval déjà en panne — il répond à « ce service a-t-il déjà montré qu'il ne répond plus, faut-il même essayer ? ». Les confondre conduit à sous-dimensionner l'un ou l'autre.

Sur le gateway Aurabase, les deux vivent dans la même pile de middlewares mais à des étages différents : le rate limiting par IP s'exécute avant l'authentification (anti-DoS pur, aucune requête SQL de facturation émise pour du trafic non authentifié), tandis que le circuit breaker protège les appels sortants vers des services internes ou des fournisseurs LLM.

#
Ce que disent les benchmarks publiés

Le coût dépend entièrement de l'implémentation, pas du principe

Selon Tyk et les guides de l'écosystème APISIX, un comptage distribué bien conçu sur Redis (opérations atomiques, script Lua, TTL natif) ajoute typiquement 1 à 3 ms de latence, avec un impact p99 inférieur à la milliseconde dans les cas les mieux optimisés. À l'inverse, Zuplo documente qu'un rate limiter centralisé mal placé peut ajouter des dizaines de millisecondes à chaque requête — cet écart se répercute directement sur votre p99.

Chiffres tiers, méthodologies différentes
Ces plages viennent de guides techniques publics (Tyk, Zuplo, écosystème Apache APISIX), pas d'un protocole de mesure commun. Elles indiquent un ordre de grandeur et un principe d'architecture — comptage atomique et local plutôt que synchrone et centralisé — pas un chiffre à reproduire tel quel sur une infrastructure différente.
#
Implémentation vérifiée

Comment le rate limiting fonctionne réellement dans aura-gateway

Le gateway Aurabase utilise la crate governor (algorithme à seau de jetons) comme limiteur local de repli, doublé d'un comptage distribué via Redis pour partager l'état entre plusieurs instances du gateway. Le comptage distribué passe par un script Lua exécuté atomiquement côté Redis (INCRBY + EXPIRE en une seule opération réseau), pas par un aller-retour lire-puis-écrire qui introduirait une fenêtre de concurrence.

Si Redis devient indisponible, le gateway bascule automatiquement sur le limiteur local governor, avec un cache moka (max 1 000 000 entrées, expiration à 300 secondes d'inactivité) pour éviter de recréer un limiteur à chaque requête. Ce repli est observable : chaque bascule incrémente un compteur Prometheus dédié, pour que l'équipe sache quand la limite effective redevient N instances × limite (dégradation d'isolation inter-instances silencieuse sinon).

Deux couches de rate limiting, pas une seule
Le gateway distingue le rate limiting anti-DoS par IP (avant l'authentification) du rate limiting par quota projet/clé API/utilisateur (après l'authentification, avec les claims JWT disponibles) — deux middlewares séparés dans la pile, chacun avec sa propre granularité.
#
Implémentation vérifiée

Le circuit breaker : trois états, une fenêtre glissante

Le circuit breaker d'Aurabase (aura_core::circuit_breaker, partagé entre le gateway et aura-ai pour le fallback entre fournisseurs LLM) suit trois états classiques — Closed, Open, HalfOpen — avec un décompte d'échecs sur une fenêtre glissante temporelle plutôt qu'un compteur qui ne se réinitialise jamais.

Un détail d'implémentation qui compte en production : le passage en HalfOpen n'autorise qu'une seule requête sonde à la fois (anti thundering-herd) — sans cette garde, toutes les requêtes en attente se rueraient simultanément sur le service qui vient de rouvrir, recréant immédiatement la panne qu'on cherchait à éviter.

#
Ordre dans la pile

Où ces middlewares s'exécutent dans le gateway

La pile de middlewares du gateway Aurabase suit un ordre précis, vérifié dans le code : identifiant de requête → journal d'accès → rate limiting par IP → authentification → rate limiting par acteur/quota → circuit breaker → proxy vers le service cible. Chaque étage rejette le trafic indésirable le plus tôt possible, avant d'engager un coût de traitement plus élevé en aval.

Lire l'article complet : data plane vs management plane dans le gateway Aurabase
#
Méthodologie

Pourquoi aucun chiffre Aurabase n'est publié ici

L'implémentation est vérifiée ligne par ligne dans le code source du gateway. Mais aucun protocole de mesure reproductible n'a encore été exécuté et publié sur cette infrastructure précise — publier un chiffre non mesuré reviendrait à répéter l'erreur des chiffres marketing non sourcés que nous refusons de reproduire. Voir notre méthodologie de benchmark complète pour ce que nous exigeons avant de publier un chiffre de performance.

#
Questions Fréquentes

FAQ

Le rate limiting ajoute-t-il toujours de la latence perceptible ?+
Cela dépend entièrement de l'implémentation. Un compteur distribué bien conçu (script Lua atomique sur Redis) ajoute typiquement moins d'une milliseconde au p99 selon les benchmarks publiés par Tyk et l'écosystème APISIX. Un rate limiter mal placé dans la pile peut au contraire ajouter des dizaines de millisecondes.
Le gateway Aurabase a-t-il publié un chiffre de latence pour son rate limiting ?+
Non. L'implémentation (crate governor pour le fallback local, script Lua Redis pour le comptage distribué, cache moka) est vérifiée dans le code, mais aucun benchmark de latence reproductible n'a été publié à ce jour sur cette infrastructure précise.
Pourquoi un circuit breaker réduit-il la latence perçue plutôt que de l'ajouter ?+
Parce qu'un circuit breaker ouvert court-circuite l'appel vers un service en panne au lieu d'attendre son timeout complet. Une réponse d'échec immédiate coûte moins cher en latence perçue qu'une requête qui attend plusieurs secondes avant d'échouer.
ARCHITECTURE VÉRIFIÉE

Un gateway Rust pensé pour la résilience

Créez un projet Aurabase gratuit et observez la pile de middlewares en conditions réelles.

Aucune carte bancaire requise · 500 MB gratuits · 50 000 MAU