વિતરિત સિસ્ટમમાં, આખરે સૌ કુछ નિષ્ફળ જાય છે. સ્થિતિસ્થાપકતા પેટર્ન એક જ નિષ્ફળતાને સંપૂર્ણ આઉટેજમાં ફેલાવતા અટકાવે છે.
વિતરિત સિસ્ટમમાં, આખરે સૌ કુछ નિષ્ફળ જાય છે. સ્થિતિસ્થાપકતા પેટર્ન એક જ નિષ્ફળતાને સંપૂર્ણ આઉટેજમાં ફેલાવતા અટકાવે છે.
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 તોફાન). હંમેશા backoff, jitter અને retry કેપ ઉમેરો.
યે પેટર્ન અનિવાર્ય એક-સેવા નિષ્ફળતાને સંપૂર્ણ સાઇટ-વ્યાપી આઉટેજ બદલે ક્ષતિગ્રસ્ત સુવિધામાં રૂપાંતરિત કરે છે.
તેઓ એક સાથે કામ કરે છે: timeouts રાહ બાંધે છે, circuit breakers મરી ગયેલી સેવાઓને હથોડો માર્યા વગર રોકે છે, bulkheads વિસ્ફોટ ત્રિજ્યા ધરાવે છે, અને retries સ્નેહથી પુનરુદ્ધાર કરે છે — કોઈ એક પણ છોડો અને નિષ્ફળતાઓ હજુ પણ ફેલાય છે.