Katika mfumo uliogawanywa, kila kitu kinashindwa hatimaye. Mifumo ya upinga hatari inazuia kosa moja la kueneza kwa njia ya kumkosa kila kitu.
Katika mfumo uliogawanywa, kila kitu kinashindwa hatimaye. Mifumo ya upinga hatari inazuia kosa moja la kueneza kwa njia ya kumkosa kila kitu.
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.
Ujaribu upya bila backoff huongeza mzigo kwenye huduma inayokamatia tayari (upepo wa ujaribu upya). Daima ongeza backoff, jitter, na kiwango cha ujaribu upya.
Mifumo hii ndiyo inayobadilisha kosa moja lisilovezekana katika huduma kuwa sifa iliyoharibika badala ya kuwa homa nzima ya wavuti.
Inasfanya pamoja: timeouts huangazia kusubiri, circuit breakers husimamisha kupiga huduma zenye kifo, bulkheads hukamatia radi ya mlipuko, na majibu upya hurejesha kutoka kwa matatizo mafupi — ondoa moja yoyote na maadhimisho bado humkosa.