વિતરિત સિસ્ટમમાં, કૉલ નિષ્ફળ જાય છે. બેકઓફ સાથે પુનઃપ્રયાસ ક્ષણિક ભૂલોમાંથી પુનः પ્રાપ્ત કરે છે; સર્કિટ બ્રેકર તમને એક આશ્રિત જે ખરેખર નીચે છે તેને હેમર કરવાથી રોકે છે. તે પૂરક છે: તડપ પર પુનઃપ્રયાસ કરો, આઉટેજ પર તોડો.
વિતરિત સિસ્ટમમાં, કૉલ નિષ્ફળ જાય છે. બેકઓફ સાથે પુનઃપ્રયાસ ક્ષણિક ભૂલોમાંથી પુનः પ્રાપ્ત કરે છે; સર્કિટ બ્રેકર તમને એક આશ્રિત જે ખરેખર નીચે છે તેને હેમર કરવાથી રોકે છે. તે પૂરક છે: તડપ પર પુનઃપ્રયાસ કરો, આઉટેજ પર તોડો.
ક્ષણિક નિષ્ફળતા (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 સાથે પુનઃપ્રયાસ તોફાનો વિના બ્લીપમાંથી પુનરુધ્ધાર કરે છે; કેપિંગ અને ઇડેમ્પોટન્સી પુનઃપ્રયાસને સુરક્ષિત રાખે છે; અને સર્કિટ બ્રેકર મૃત આશ્રિતમાં સંસાધનો વેડફાણ કરવાથી રોકે છે અને તેને પુનરુધ્ધાર માટે જગ્યા આપે છે. સાથે મળીને, તેઓ આશ્રિત નિષ્ફળતાને સમાવિષ્ટ, સ્વ-ગર્ભરક્ષણ ઘટનામાં ફેરવે છે.