Circuit Breaker
Architecture 🟡 MidDefinition
Detecte les defaillances et empeche l'application de tenter des operations vouees a l'echec. Trois etats : ferme, ouvert, semi-ouvert.
Analogie
Un disjoncteur electrique : il coupe le courant quand il detecte une surcharge pour proteger l'installation.
Exemple de code
class CircuitBreaker {
#failures = 0;
async call(fn) {
if (this.#failures > 5) throw new Error('Circuit open');
try { return await fn(); }
catch(e) { this.#failures++; throw e; }
}
}
Cas d'usage
Appels a des services externes instables pour eviter les cascades de pannes.
Anti-pattern
Retry infini sans circuit breaker — le service defaillant est submerge.