Saga Pattern
Saga-Muster
Eine Saga verknüpft mehrere gespeicherte Schritte zu einem Geschäftsvorgang. Wenn ein späterer Schritt fehlschlägt, wird er erneut versucht oder ein weiterer Schritt hinzugefügt, um vorher Geschehenes zu korrigieren.
saga ID + local transaction -> next step; failure -> retry | compensation -> terminal state- ✓Flug gehaltenflight_tx_7
- ✓Karte belastetpay_tx_8
- !Hotel nicht verfügbarhotel_tx_9
saga ID + local transaction -> next step; failure -> retry | compensation -> terminal stateJOBEin weiteres Beispiel
Bestellung `984` reserviert Bestand, autorisiert NT$248 und fragt dann nach Versand. Der Versand lehnt die Adresse ab. Die Saga storniert die Autorisierung und gibt den Bestand mit derselben Saga-ID frei. Anschließend wird die Bestellung als ausgeglichen aufgezeichnet.
Hauptteile
- 01Saga-ID und Status
- 02Teilnehmende Dienste
- 03Lokale Transaktionen
- 04Ergebnisnachrichten
- 05Wiederholung oder Entschädigung
- 06Prüfung und manuelle Wiederherstellung
Verwenden Sie es, wenn
Verwenden Sie eine Saga, wenn ein Geschäftsauftrag sich über Dienste oder Datenspeicher erstreckt. Verwenden Sie sie nur, wenn ein einziges Alles-oder-Nichts-Datenbankfeld nicht den gesamten Auftrag abdecken kann. Definieren Sie jeden gespeicherten Schritt, die nächste Aktion, den Wiederholungsversuch, die Behebungsaktion und den Endzustand.
Nutze es nicht, wenn
Fügen Sie keine Saga hinzu, wenn ein Datenbankspeichern die ganze Arbeit erledigen kann. Eine Korrekturaktion ist neue Arbeit. Sie kann fehlschlagen oder ein anderes Ergebnis hinterlassen. Fragen Sie eine Person, wenn eine Aktion unsicher rückgängig zu machen ist.
In Code verwendeter Name
saga ID + local transaction -> next step; failure -> retry | compensation -> terminal state Vor dem Ausliefern
Check contracts and invariants, authorization, and input limits. Test retries, one-time effects, timeouts, and partial failures. Verify data integrity, compatibility, monitoring, recovery, and rollback.
Outcome: Complete the task with Saga-Muster (Saga Pattern). User context: Bestellung `984` reserviert Bestand, autorisiert NT$248 und fragt dann nach Versand. Der Versand lehnt die Adresse ab. Die Saga storniert die Autorisierung und gibt den Bestand mit derselben Saga-ID frei. Anschließend wird die Bestellung als ausgeglichen aufgezeichnet. Technical concept or control: Saga-Muster (Saga Pattern). Why it fits: Verwenden Sie eine Saga, wenn ein Geschäftsauftrag sich über Dienste oder Datenspeicher erstreckt. Verwenden Sie sie nur, wenn ein einziges Alles-oder-Nichts-Datenbankfeld nicht den gesamten Auftrag abdecken kann. Definieren Sie jeden gespeicherten Schritt, die nächste Aktion, den Wiederholungsversuch, die Behebungsaktion und den Endzustand. Do not use it when: Fügen Sie keine Saga hinzu, wenn ein Datenbankspeichern die ganze Arbeit erledigen kann. Eine Korrekturaktion ist neue Arbeit. Sie kann fehlschlagen oder ein anderes Ergebnis hinterlassen. Fragen Sie eine Person, wenn eine Aktion unsicher rückgängig zu machen ist. Engineering requirements: Define inputs, outputs, contracts, and rules that must always hold. Set authorization and input checks. Define failures, timeouts, retries, one-time effects, data moves, and compatibility limits. Operations: Add useful signals and logs that hide sensitive data. Set capacity limits and write an operator guide. Test recovery and rollback. Acceptance criteria: Contract and failure-path tests pass. Data and authorization rules still hold during retries and partial failures. Check performance limits, monitoring, recovery, and rollback. Evidence and limits (evidence boundary): Kein einziger offizieller Standard kontrolliert den gesamten Begriff. Seine Bedeutung kann sich zwischen Teams, Plattformen oder Frameworks ändern. Unknowns to confirm: Where the code runs, data stores, traffic shape, consistency needs, and the security boundary. Also confirm the compatibility period, service goals, and rollback limits.
Diese Anfrage prüfen
Review how Saga-Muster (Saga Pattern) is used now. Definition: Eine Saga verknüpft mehrere gespeicherte Schritte zu einem Geschäftsvorgang. Wenn ein späterer Schritt fehlschlägt, wird er erneut versucht oder ein weiterer Schritt hinzugefügt, um vorher Geschehenes zu korrigieren. Release checks: Check contracts and invariants, authorization, and input limits. Test retries, one-time effects, timeouts, and partial failures. Verify data integrity, compatibility, monitoring, recovery, and rollback. Before changing code, list the evidence, gaps, severity, and the smallest safe fix.