Architektur Experte
Saga Pattern – verteilte Transaktionen ohne 2PC¶
SagaTransactionsMicroservices 3 min Lesezeit
Implementierung des Saga Patterns fuer Datenkonsistenz ueber Microservices hinweg. Choreografie vs. Orchestrierung.
Das Problem verteilter Transaktionen¶
Im Monolithen reicht eine DB-Transaktion. In Microservices hat jeder Dienst seine eigene DB – klassische Transaktionen funktionieren nicht. Saga ist eine Sequenz lokaler Transaktionen mit kompensierenden Aktionen.
Choreografie vs. Orchestrierung¶
Choreografie: Dienste kommunizieren ueber Events, kein zentraler Koordinator.
Orchestrierung: Ein zentraler Saga-Orchestrator steuert die Sequenz der Schritte.
class CreateOrderSaga {
steps = [
{ action: 'order.create', compensate: 'order.cancel' },
{ action: 'payment.process', compensate: 'payment.refund' },
{ action: 'inventory.reserve', compensate: 'inventory.release' },
{ action: 'order.confirm', compensate: null }
];
async execute(data) {
const completed = [];
for (const step of this.steps) {
try {
await this.invoke(step.action, data);
completed.push(step);
} catch (error) {
for (const s of completed.reverse())
if (s.compensate) await this.invoke(s.compensate, data);
throw error;
}
}
}
}
Wann was verwenden¶
- Choreografie – einfachere Sagas (2-4 Schritte)
- Orchestrierung – komplexere Sagas (5+ Schritte)
- Werkzeuge: Temporal, Camunda, AWS Step Functions
Zusammenfassung¶
Das Saga Pattern erfordert einen sorgfaeltigen Entwurf von Kompensationsaktionen und idempotenten Operationen. Fuer komplexe Workflows empfehlen wir die Orchestrierung mit Temporal.
Brauchen Sie Hilfe bei der Implementierung?¶
Unser Team hat Erfahrung mit dem Entwurf und der Implementierung moderner Architekturen. Wir helfen Ihnen gerne.