वितरित प्रणालीमध्ये, सर्वकाही शेवटी अयशस्वी होते. लचकदारी पॅटर्न एकल अयशस्वीतेला पूर्ण आउटेजमध्ये कास्केडिंग होण्यापासून रोखते.
वितरित प्रणालीमध्ये, सर्वकाही शेवटी अयशस्वी होते. लचकदारी पॅटर्न एकल अयशस्वीतेला पूर्ण आउटेजमध्ये कास्केडिंग होण्यापासून रोखते.
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 शिवाय पुन्हा प्रयत्न आधीच संघर्ष करणाऱ्या सेवेवर लोड वाढविते (पुन्हा प्रयत्न वादळ). नेहमी backoff, jitter आणि पुन्हा प्रयत्न मर्यादा जोडा.
ही पॅटर्न हीच आहे जी अपरिहार्य एकल-सेवा अयशस्वीतेला पूर्ण साइट आउटेजऐवजी एक कमजोर वैशिष्ट्यमध्ये रूपांतरित करते.
ते एकत्रितपणे कार्य करतात: timeouts प्रतीक्षा बंधन करते, circuit breaker मरत असलेल्या सेवांना हिरावून घेणे थांबवते, bulkhead विस्फोट त्रिज्या समाविष्ट करते, आणि पुन्हा प्रयत्न blips वरून पुनरुद्धार करते — कोणतीही एक वगळली तर अयशस्वीता अजूनही कास्केड होते.