Přeskočit na obsah
_CORE
Architektura Pokročilý

Circuit Breaker Pattern — ochrana před kaskádovým selháním

Circuit BreakerResiliencePatterns
3 min čtení

Implementace Circuit Breaker patternu pro resilientní mikroservisy. Stavy, konfigurace a praktické příklady.

Problém kaskádového selhání

Když služba B neodpovídá, služba A čeká na timeout. Requesty se hromadí a selhání se šíří celým systémem. Circuit Breaker rychle selže místo čekání.

Tři stavy

  • Closed — normální provoz, počítá error rate
  • Open — requesty se okamžitě zamítají
  • Half-Open — pouští testovací requesty
class CircuitBreaker {
    constructor(opts = {}) {
        this.threshold = opts.failureThreshold || 5;
        this.resetTimeout = opts.resetTimeout || 30000;
        this.state = 'CLOSED';
        this.failures = 0;
        this.lastFailure = null;
    }
    async call(fn) {
        if (this.state === 'OPEN') {
            if (Date.now() - this.lastFailure > this.resetTimeout)
                this.state = 'HALF_OPEN';
            else throw new Error('Circuit OPEN');
        }
        try {
            const result = await fn();
            this.failures = 0; this.state = 'CLOSED';
            return result;
        } catch (e) {
            this.failures++;
            this.lastFailure = Date.now();
            if (this.failures >= this.threshold) this.state = 'OPEN';
            throw e;
        }
    }
}

Knihovny

  • Node.js: opossum
  • Java: Resilience4j
  • Python: pybreaker
  • .NET: Polly

Shrnutí

Circuit Breaker je must-have v distribuované architektuře. Vždy kombinujte s fallback logikou a monitoringem.

Potřebujete pomoct s implementací?

Náš tým má zkušenosti s návrhem a implementací moderních architektur. Rádi vám pomůžeme.

Nezávazná konzultace