Š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:
-
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.
-
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.