Sobes.tech
Middle+

Mi az a saga a tranzakciók kezelésének kontextusában?

sobes.tech MI

Válasz az MI-től

A saga egy olyan minta a elosztott tranzakciók kezelésére mikroservice architektúrákban. Egy sor helyi tranzakciót jelent, ahol minden tranzakció egy szolgáltatás keretében adatok frissítését végzi.

Ha a sorozatban bármely helyi tranzakció sikertelen, a saga végrehajt egy kompenzációs tranzakciók halmazát, hogy visszavonja az előzőleg sikeresen befejezett helyi tranzakciók által végrehajtott változtatásokat, így helyreállítva a rendszer integritását.

Két fő megközelítés létezik a sagák megvalósítására:

  1. Koreográfia: A szolgáltatások közvetlenül eseményeket cserélnek, nem bíznak egy központi koordinátorra. Minden szolgáltatás figyeli a más szolgáltatások által generált eseményeket, és végrehajtja saját helyi tranzakcióit és/vagy új eseményeket tesz közzé válaszként.

    • Előnyök: Egyszerűbb kivitelezés kis számú szolgáltatás esetén, nincs egyetlen hiba pont.
    • Hátrányok: Nehéz követni a végrehajtás folyamatát és a potenciális ciklikus függőségeket, nehezebb hibakeresni.
  2. Orkesztráció: Egy központi orkesztrátor (saga-orkesztátor) irányítja a helyi tranzakciók végrehajtásának sorrendjét. Az orkesztrátor parancsokat küld a szolgáltatásoknak, hogy hajtsák végre helyi tranzakcióikat, és reagál a szolgáltatások által visszaküldött eseményekre (siker/hiba), döntéseket hozva a következő lépésről vagy a kompenzációs tranzakciók végrehajtásáról.

    • Előnyök: Világos felelősségmegosztás, könnyebb követni és hibakeresni a folyamatot, könnyebb összetett logikát bevezetni.
    • Hátrányok: Az orkesztrátor lehet egyetlen hiba pont, további logikát igényel a saga állapotának kezeléséhez.

A kiválasztott megvalósítás a üzleti folyamat összetettségétől, az érintett szolgáltatások számától és a kezelési, megfigyelhetőségi követelményektől függ. A saga nem garantálja az atomaritást a klasszikus értelemben (ACID), de garantálja az eventual consistency-t.