I et distribuert system mislykkes alt til slutt. Resilience-mønstre forhindrer at en enkel feil kaskaderer til et totalt brudd.
I et distribuert system mislykkes alt til slutt. Resilience-mønstre forhindrer at en enkel feil kaskaderer til et totalt brudd.
const breaker = new CircuitBreaker(callPaymentService, {
timeout: 3000, // fail the call after 3s
errorThresholdPercentage: 50, // open if >50% of calls fail
resetTimeout: 10000 // after 10s, try one request (half-open)
});
breaker.fallback(() => ({ status: 'queued' })); // graceful degradation
CLOSED ──(failures exceed threshold)──▶ OPEN
▲ │ (after resetTimeout)
│ (trial succeeds) ▼
└────────────── HALF-OPEN ◀──────────────┘
(one trial request)
[ pool A: 10 threads ] → payment calls
[ pool B: 10 threads ] → search calls
If search hangs, it drains pool B only — payments keep working.
Retries uten backoff forsterker belastningen på en allerede slitende tjeneste (en retry-storm). Legg alltid til backoff, jitter og en retry-grense.
Disse mønstrene er det som gjør en uunngåelig feil i én tjeneste til en forverret funksjon i stedet for et nettstedbredt avbrudd.
De fungerer sammen: timeouts begrenser ventetiden, circuit breakers stopper hammering av døde tjenester, bulkheads begrenser skadenes omfang, og retries gjenoppretter seg fra glipp — utelat noen og feil kaskaderer fortsatt.
Et bibliotek av IT-intervjuspørsmål med detaljerte svar — fra Junior til Senior.
Doner