விநியோக அமைப்பில், எல்லாம் இறுதியில் தோல்வியடையும். நின்சரணை வடிவங்கள் ஒற்றை தோல்வி முழு நிறுத்தத்திற்கு பாய்ச்சுவதை தடுக்கின்றன.
விநியோக அமைப்பில், எல்லாம் இறுதியில் தோல்வியடையும். நின்சரணை வடிவங்கள் ஒற்றை தோல்வி முழு நிறுத்தத்திற்கு பாய்ச்சுவதை தடுக்கின்றன.
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, மற்றும் retry மூலதன சீமை சேர்க்கவும்.
இந்த வடிவங்கள் ஒரு தவிர்க்க முடியாத சேவை-ஒক்கலான தோல்வி ஒரு சைட்-வাயிட் நிறுத்தத்திற்கு பதிலாக ஒரு சரிந்த சிறப்பாக மாற்றுவது.
அவை ஒன்றாக வேலை செய்யுங்கள்: timeouts பொறுமை பற்றி நீர் பொழிந்து, circuit breakers இறந்த சேவைகளை சரிசெய்வதை நிறுத்து, bulkheads வெடிப்பு ஆரம் அடக்கு, மற்றும் retries blips இலிருந்து மீட்க கொடுக்க — ஏதேனும் ஒன்றை விட்டுவிட்டு தோல்விகள் இன்னும் பாய்ச்சுகின்றன.