वितरित सिस्टम में, कॉल विफल हो जाती है। बैकऑफ़ के साथ पुनः प्रयास क्षणिक त्रुटियों से पुनः प्राप्त करते हैं; सर्किट ब्रेकर आपको एक निर्भरता को हथौड़ा मारने से रोकता है जो वास्तव में बंद है। वे पूरक हैं: ब्लिप पर पुनः प्रयास करें, आउटेज पर तोड़ें।
वितरित सिस्टम में, कॉल विफल हो जाती है। बैकऑफ़ के साथ पुनः प्रयास क्षणिक त्रुटियों से पुनः प्राप्त करते हैं; सर्किट ब्रेकर आपको एक निर्भरता को हथौड़ा मारने से रोकता है जो वास्तव में बंद है। वे पूरक हैं: ब्लिप पर पुनः प्रयास करें, आउटेज पर तोड़ें।
क्षणिक विफलताओं (timeouts, संक्षिप्त नेटवर्क ब्लिप्स, 503s) के लिए, पुनः प्रयास करें — लेकिन घातीय रूप से बैकऑफ़ करें और jitter जोड़ें ताकि पुनः प्रयास एक गरजती भीड़ में सिंक्रोनाइज़ होने के बजाय फैल जाएं।
attempt 1 → wait ~1s (+ random jitter)
attempt 2 → wait ~2s (+ random jitter)
attempt 3 → wait ~4s (+ random jitter)
→ cap at maxRetries (e.g. 3) and a max delay → don't retry forever
मुख्य सावधानियां:
सर्किट ब्रेकर एक निर्भरता में विफलताओं को ट्रैक करता है और, एक दहलीज के बाद, खुल जाता है — मृत सेवा को कॉल करने के बजाय तेज़ी से विफल हो जाता है (या फॉलबैक लौटाता है)। एक शीतलन अवधि के बाद यह आधा-खुला हो जाता है ताकि पुनर्प्राप्ति की जांच की जा सके।
CLOSED → calls pass through; count failures
too many failures → trip → OPEN
OPEN → fail fast immediately (no call); start cooldown timer
cooldown elapsed → HALF-OPEN
HALF-OPEN → allow a few probe calls
success → CLOSED (recovered) ; failure → back to OPEN
Retry → transient, likely-to-succeed-soon errors (1 slow call)
Circuit breaker → repeated/sustained failures (the dependency is down)
→ use together: breaker prevents retries from piling onto a dead service
इनके बिना, एक विफल निर्भरता कॉलर को इसके साथ नीचे ले जाती है: अनुरोध timeouts पर बढ़ते हैं, पुनः प्रयास लोड को बढ़ाते हैं, और विफलता सेवाओं में कैस्केड होती है। घातीय बैकऑफ़ jitter के साथ पुनः प्रयास तूफान के बिना ब्लिप्स से पुनः प्राप्त होता है; कैपिंग और इडेम्पोटेंसी पुनः प्रयास को सुरक्षित रखते हैं; और सर्किट ब्रेकर मृत निर्भरता पर संसाधनों को बर्बाद करने से रोकता है और इसे पुनर्प्राप्त होने के लिए जगह देता है। एक साथ, वे निर्भरता विफलता को एक सीमित, स्व-हीलिंग घटना में बदल देते हैं।