Sobes.tech
Middle+

Kas yra saga transakcijų valdymo kontekste?

sobes.tech AI

Atsakymas iš AI

Saga yra paskirstytų sandorių valdymo modelis mikropaslaugų architektūroje. Ji sudaro eilę vietinių sandorių, kur kiekvienas sandoris atnaujina duomenis viename serveryje.

Jei kuris nors vietinis sandoris eilėje nepavyksta, saga vykdo kompensacinius sandorius, kad atšauktų ankstesnių sėkmingai užbaigtų vietinių sandorių pakeitimus ir taip atstatytų sistemos vientisumą.

Yra du pagrindiniai saga įgyvendinimo būdai:

  1. Choreografija (Choreography): Servisai tiesiogiai keičiasi įvykiais, nesinaudodami centrinio koordinatoriaus pagalba. Kiekvienas servisas klausosi kitų servisų generuojamų įvykių ir atlieka savo vietinius sandorius ir/arba skelbia naujus įvykius.

    • Privalumai: Paprasčiau įgyvendinti mažam servisų skaičiui, nėra vieno taško, kuris gali sugesti.
    • Trūkumai: Sunku stebėti vykdymo srautą ir galimas ciklines priklausomybes, sunkiau derinti.
  2. Orkestravimas (Orchestration): Centrinis orkestratorius (saga-orkestratorius) valdo vietinių sandorių vykdymo seką. Orkestratorius siunčia komandas servisams, kad jie atliktų savo vietinius sandorius, ir reaguoja į įvykius, kuriuos siunčia servisai (sėkmė/nepavykimas), priimant sprendimus dėl kito žingsnio ar kompensacinių sandorių pradžios.

    • Privalumai: Aiški atsakomybės paskirstymas, lengviau stebėti ir derinti vykdymo srautą, lengviau įdiegti sudėtingas logikas.
    • Trūkumai: Orkestratorius gali būti vienintelis gedimo taškas, reikalinga papildoma logika saga būsenai valdyti.

Pasirinkimas priklauso nuo verslo proceso sudėtingumo, įtrauktų servisų skaičiaus ir valdymo bei stebėjimo reikalavimų. Saga nesuteikia atomariškumo tradicine prasme (ACID), bet garantuoja galutinį nuoseklumą.