V distribuovaných systémech selžou volání. Opakování s exponenciálním zpožděním se zotavují z přechodných chyb; jistice vás zastaví před bombardováním závislosti, která je opravdu vyřazena z provozu. Jsou se doplňují: opakujte chvilkový problém, odpojte se při výpadku.
Opakování s exponenciálním zpožděním a jitrem
Pro přechodné poruchy (timeouty, krátké výpadky sítě, 503s) opakujte — ale zpožďujte exponenciálně a přidejte jitter aby se opakování rozprostřela místo synchronizace do hromadné hromady.
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
Hlavní upozornění:
- Omezit opakování — neomezená opakování vytvářejí opakující se bouře které přetěží zotavující se službu.
- Idempotentnost — pouze opakujte operace, které jsou bezpečné k opakování (opakované platby nesmí účtovat dvakrát).
- Jitter — bez něj se všichni klienti opakují ve stejný okamžik a znovu zvyšují zatížení.
Jistice
Jistice sleduje selhání závislosti a po překročení prahu se otevře — selhání rychle (nebo vrátí náhradní řešení) místo volání mrtvé služby. Po období ochlazení se změní na poloprovozní aby prověřila zotavení.
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
Kdy se jednotlivé použijí
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
Proč je to důležité
Bez těchto mechanismů jedna selhávající závislost strhne volajícího: požadavky se hromadí na timeoutech, opakování zvětšují zatížení a selhání se šíří mezi službami. Exponenciální zpoždění s jitrem se zotavuje z chybiček bez bouře opakování; omezení a idempotentnost udržují opakování v bezpečí; a jistice zastavuje plýtvání zdroji na mrtvé závislosti a dává jí prostor na zotavení. Dohromady změní selhání závislosti na obsaženou, samoléčící se událost.
