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