Sobes.tech
Middle+

Was ist eine Saga im Kontext der Transaktionsverwaltung?

sobes.tech KI

Antwort von AI

Eine Saga ist ein Muster zur Verwaltung verteilter Transaktionen in einer Microservice-Architektur. Sie besteht aus einer Sequenz von lokalen Transaktionen, bei denen jede Transaktion Daten innerhalb eines einzelnen Dienstes aktualisiert.

Wenn eine lokale Transaktion in der Sequenz fehlschlägt, führt die Saga eine Reihe von Kompensations-Transaktionen durch, um die Änderungen rückgängig zu machen, die durch zuvor erfolgreich abgeschlossene lokale Transaktionen vorgenommen wurden, und stellt so die Integrität des Systems wieder her.

Zwei Hauptansätze zur Implementierung von Sagas:

  1. Choreographie: Dienste tauschen direkt Ereignisse aus, ohne auf einen zentralen Koordinator zu vertrauen. Jeder Dienst hört auf Ereignisse, die von anderen Diensten generiert werden, und führt seine lokalen Transaktionen aus und/oder veröffentlicht neue Ereignisse als Antwort.

    • Vorteile: Einfacher umzusetzen bei einer kleinen Anzahl von Diensten, kein einzelner Ausfallpunkt.
    • Nachteile: Schwer nachzuvollziehen, wie der Ablauf verläuft, potenzielle zyklische Abhängigkeiten, schwerer zu debuggen.
  2. Orchestrierung: Ein zentraler Orchestrator (Saga-Orchestrator) steuert die Abfolge der Ausführung der lokalen Transaktionen. Der Orchestrator sendet Befehle an die Dienste, damit sie ihre lokalen Transaktionen ausführen, und reagiert auf die von den Diensten zurückgegebenen Ereignisse (Erfolg/Misserfolg), um Entscheidungen über den nächsten Schritt oder die Ausführung von Kompensations-Transaktionen zu treffen.

    • Vorteile: Klare Verantwortlichkeiten, leichter nachzuvollziehen und debuggen, komplexe Logik leichter umzusetzen.
    • Nachteile: Der Orchestrator kann ein einzelner Ausfallpunkt sein, erfordert zusätzliche Logik zur Verwaltung des Saga-Status.

Die Wahl der Implementierung hängt von der Komplexität des Geschäftsprozesses, der Anzahl der beteiligten Dienste und den Anforderungen an Management und Beobachtbarkeit ab. Saga garantiert keine atomare Transaktion im klassischen Sinne (ACID), sondern gewährleistet eventual consistency.