Sobes.tech
Middle+

Šta je saga u kontekstu upravljanja transakcijama?

sobes.tech АИ

Одговор од АИ

Saga je obrazac za upravljanje distribuiranim transakcijama u arhitekturi mikroservisa. Predstavlja niz lokalnih transakcija, gde svaka transakcija ažurira podatke u okviru jednog servisa.

Ako neka lokalna transakcija u nizu ne uspe, saga izvršava skup kompenzacionih transakcija da poništi promene napravljene prethodnim uspešno završеним lokalnim transakcijama, čime obnavlja celokupni integritet sistema.

Dva glavna pristupa za implementaciju saga:

  1. Horeografija: Servisi direktno razmenjuju događaje, ne oslanjajući se na centralnog koordinatora. Svaki servis sluša događaje koje generišu drugi servisi i izvršava svoje lokalne transakcije i/ili objavljuje nove događaje kao odgovor.

    • Prednosti: Lakše za implementaciju za mali broj servisa, nema jedne tačke kvara.
    • Nedostaci: Teže je pratiti tok izvršenja i potencijalne cikličke zavisnosti, teže za debugovanje.
  2. Orkestracija: Centralni orkestrator (saga-orkestrator) upravlja redosledom izvršenja lokalnih transakcija. Orkestrator šalje komande servisima da izvrše svoje lokalne transakcije i reaguje na događaje koje ti servisi vraćaju (uspeh/neuspeh), donoseći odluke o sledećem koraku ili pokretanju kompenzacionih transakcija.

    • Prednosti: Jasna odgovornost, lakše za praćenje i debugovanje toka, lakše za implementaciju složenih logika.
    • Nedostaci: Orkestrator može biti tačka kvara, zahteva dodatnu logiku za upravljanje stanjem sage.

Izbor implementacije zavisi od složenosti poslovnog procesa, broja uključenih servisa i zahteva za upravljanjem i nadgledanjem. Saga ne garantuje atomarnost u klasičnom smislu (ACID), ali garantuje eventualnu konzistentnost.