Sobes.tech
Middle+

Č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:

  1. 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.
  2. 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.