Technische Entscheidungen · Senior · Frage 5 von 14
Eine Bestellung umfasst die Dienste Zahlung, Lager und Versand, jeder mit eigener Datenbank. Jeder Schritt kann scheitern, und kurze Inkonsistenz ist akzeptabel. Wie koordinierst du sie?
- 1Eine Saga mit kompensierenden Aktionen pro Schritt
- 2Ein Two-Phase Commit über alle drei Datenbanken
- 3Eine gemeinsame Datenbank für alle drei Dienste
Antwort zeigen
Richtige Antwort: Eine Saga mit kompensierenden Aktionen pro Schritt
Erklärung
Eine Saga führt lokale Transaktionen aus und macht erledigte Schritte bei Fehlern rückgängig, was zu Diensten passt, die ihre Daten besitzen, und kurze Inkonsistenz akzeptiert. Two-Phase Commit passt zu wenigen eng gekoppelten Datenbanken, die es alle unterstützen, blockiert aber Teilnehmer und schadet der Verfügbarkeit. Eine gemeinsame Datenbank passt zu Diensten, die nicht wirklich getrennt sind, und bringt die Kopplung zurück, derentwegen sie getrennt wurden.