განაწილებულ სისტემაში, ყველაფერი საბოლოოდ მოიშვება. მდგრადობის პატერნები ხელს უშლებენ ერთი წაუმტკივარი ხარვეზიდან სრულ გამორთვამდე გაშლას.
განაწილებულ სისტემაში, ყველაფერი საბოლოოდ მოიშვება. მდგრადობის პატერნები ხელს უშლებენ ერთი წაუმტკივარი ხარვეზიდან სრულ გამორთვამდე გაშლას.
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.
Retry backoff-ის გარეშე აძლიერებს დატვირთვას უკვე ბრძოლის სერვისში (retry ქარი). ყოველთვის დაამატეთ backoff, jitter და retry ზღვრული.
ეს პატერნები ის არიან, რომლებიც ერთი აუცილებელი სერვისის წარუმატებლობას რთავს გაუარესებული ფიჩაში იმის ნაცვლად, რომ მთელი საიტი დაკრუნჩხვა.
ისინი ერთად მუშაობენ: timeouts მოთხოვნის დაცვა, circuit breakers შეჩერება ცემა მიკვლელი სერვისები, bulkheads ჯამი აფეთქება რადიუსი, და retries აღდეგვა blips - გამოტოვეთ ერთი და მერე გაუმართებლობები კვლავ გაშლა.