वितरित प्रणालीमा, सबै कुरा अन्ततः असफल हुन्छ। लचिलोपन ढाँचाहरूले एकल असफलतालाई पूर्ण विघ्नमा फैलिनबाट रोक्छन्।
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.
Backoff बिना retries पहिले नै संघर्ष गरिरहेको सेवामा लोड बढाउँछ (एक retry storm)। सधैं backoff, jitter, र एक retry क्याप जोड्नुहोस्।
यी ढाँचाहरू अनिवार्य एकल-सेवा असफलतालाई साइट-व्यापी विघ्नको सट्टामा एक अवनत विशेषतामा परिणत गर्छन्।
तिनीहरू एकसाथ काम गर्छन्: timeouts प्रतीक्षा बाउन्ड गर्छन्, circuit breakers मृत सेवाहरूलाई हथौड़ा गर्नबाट रोक्छन्, bulkheads blast radius समावेश गर्छन्, र retries blips बाट पुनरुद्धार गर्छन् — कुनै पनि एक हटाउनु हुँदैन र असफलताहरू अझै पनि फैलिन्छन्।
विस्तृत उत्तरसहित IT अन्तर्वार्ता प्रश्नहरूको पुस्तकालय — जुनियरदेखि सिनियरसम्म।
दान गर्नुहोस्