Co je to saga v kontextu správy transakcí?
sobes.tech AI
Odpověď od AI
Saga je vzor správy distribuovaných transakcí v architektuře mikroservisů. Představuje posloupnost místních transakcí, kdy každá transakce aktualizuje data v rámci jednoho servisu.
Pokud některá místní transakce v posloupnosti selže, saga provede sadu kompenzačních transakcí, aby zrušila změny provedené dříve úspěšně dokončenými místními transakcemi, čímž obnoví integritu systému.
Dva hlavní přístupy k implementaci sag:
-
Choreografie: Služby přímo vyměňují události, nespoléhají na centrálního koordinátora. Každý služba poslouchá události generované jinými službami a provádí své místní transakce a/nebo publikuje nové události jako odpověď.
- Výhody: Snadnější implementace pro malé množství služeb, neexistuje jediný bod selhání.
- Nevýhody: Těžší sledovat tok provádění a potenciální cyklické závislosti, složitější ladění.
-
Orchestrace: Centrální orchestrátor (saga orchestrátor) řídí sekvenci provádění místních transakcí. Orchestrátor posílá příkazy službám, aby provedly své místní transakce, a reaguje na události vrácené službami (úspěch/neúspěch), aby rozhodl o dalším kroku nebo spuštění kompenzačních transakcí.
- Výhody: Jasná odpovědnost, jednodušší sledování a ladění toku, jednodušší implementace složitých logik.
- Nevýhody: Orchestrátor může být jediným bodem selhání, vyžaduje další logiku pro správu stavu sagy.
Volba implementace závisí na složitosti obchodního procesu, počtu zapojených služeb a požadavcích na správu a sledovatelnost. Saga nezaručuje atomárnost v tradičním smyslu (ACID), ale garantuje eventual consistency.