Mis on saga transaktsioonide haldamise kontekstis?
sobes.tech AI
Vastus AI-lt
Saga on hajutatud tehingute haldamise muster mikroteenuste arhitektuuris. See koosneb seeriast kohalike tehingute, kus iga tehing uuendab andmeid ühes teenuses.
Kui ükski kohaliku tehingu seerias ei õnnestu, täidab saga kompenseerivaid tehinguid, et tühistada eelnevalt edukalt lõpetatud kohalike tehingute muudatused ning taastada süsteemi terviklikkus.
Saga rakendamise kaks peamist lähenemisviisi on:
-
Koreograafia (Choreography): Teenused suhtlevad otse sündmustega, mitte keskse koordineerija abil. Iga teenus kuulab teiste teenuste loodud sündmusi ning sooritab oma kohalikke tehinguid ja/või avaldab uusi sündmusi.
- Eelised: Lihtsam rakendada väikese arvu teenuste puhul, puudub üksainsa tõrkepunkt.
- Miinused: Raskem jälgida täitmise voogu ja võimalikke tsüklilisi sõltuvusi, keerulisem siluda.
-
Orkestreerimine (Orchestration): Keskne orkestreerija (saga-orkestreerija) juhib kohalike tehingute täitmise järjekorda. Orkestreerija saadab käsklusi teenustele, et nad teeksid oma kohalikke tehinguid ning reageerib sündmustele, mida teenused saadavad (edu/ebaõnnestumine), ning teeb otsuseid järgmise sammu või kompenseerivate tehingute alustamise kohta.
- Eelised: Selge vastutuse jaotus, lihtsam jälgida ja siluda täitmise voogu, lihtsam rakendada keerukaid loogikaid.
- Miinused: Orkestreerija võib olla ainsana tõrke punkt, vajab täiendavat loogikat saga oleku haldamiseks.
Valik sõltub äriprotsessi keerukusest, kaasatud teenuste arvust ning haldamise ja jälgimise nõuetest. Saga ei taga klassikalises mõttes atomaarset (ACID), kuid garanteerib lõpliku järjepidevuse.