Čo je saga v kontexte správy transakcií?
sobes.tech AI
Odpoveď od AI
Saga je vzor správy distribuovaných transakcií v architektúre mikroservisov. Predstavuje sled lokálnych transakcií, pri ktorých každá transakcia aktualizuje údaje v rámci jedného servisu.
Ak niektorá lokálna transakcia v sledovaní zlyhá, saga vykoná súbor kompenzačných transakcií na zrušenie zmien vykonaných predchádzajúcimi úspešne ukončenými lokálnymi transakciami, čím obnoví integritu systému.
Dva hlavné prístupy k implementácii sag:
-
Choreografia: Služby si vymieňajú udalosti priamo, bez závislosti na centrálnom koordinátorovi. Každý servis počúva udalosti generované inými službami a vykonáva svoje lokálne transakcie a/alebo publikuje nové udalosti ako odpoveď.
- Výhody: Jednoduchšie na implementáciu pri malom počte služieb, neexistuje jediný bod zlyhania.
- Nevýhody: Ťažšie sledovať tok vykonávania a potenciálne cyklické závislosti, zložitejšie na ladenie.
-
Orchestration: Centrálny orchestrátor (saga orchestrátor) riadi sekvenciu vykonávania lokálnych transakcií. Orchestrátor posiela príkazy službám, aby vykonali svoje lokálne transakcie, a reaguje na udalosti vracané službami (úspech/neúspech), aby prijal rozhodnutia o ďalšom kroku alebo spustení kompenzačných transakcií.
- Výhody: Jasné rozdelenie zodpovednosti, jednoduchšie sledovanie a ladenie toku, jednoduchšia implementácia zložitých logík.
- Nevýhody: Orchestrátor môže byť jediným bodom zlyhania, vyžaduje ďalšiu logiku na správu stavu sagy.
Voľba implementácie závisí od zložitosti obchodného procesu, počtu zapojených služieb a požiadaviek na správu a sledovateľnosť. Saga nezaručuje atomickosť v klasickom zmysle (ACID), ale garantuje eventual consistency.