Backend, données et sécurité Plus de détails C · Convention industrielle Plateforme: Web

Saga Pattern

Modèle Saga

Une saga relie plusieurs étapes sauvegardées en un seul travail métier. Si une étape ultérieure échoue, elle recommence ou ajoute une autre étape pour corriger ce qui s’est passé précédemment.

Vous pourriez l'appeler Saga Patternsaga distribuéeflux de travail sagatransaction saga

Voir comment cela fonctionne

Exemple travaillé originalModèle Saga
État & récupérationModèle Sagasaga ID + local transaction -> next step; failure -> retry | compensation -> terminal state
RÉSERVATION DE VOYAGEhôtel échoué
  1. ✓Vol maintenuflight_tx_7
  2. ✓Carte débitéepay_tx_8
  3. !Hôtel indisponiblehotel_tx_9
↶ Compensation terminéesaga: cancelled
GARDER SÉCURISÉChaque service effectue une étape locale et enregistre ce qui s'est passé.RÉCUPÉRERRéessayez le travail en avant ou exécutez des actions de compensation explicites.
saga ID + local transaction -> next step; failure -> retry | compensation -> terminal stateJOB
Modèle SagaFiabilité du backend

Un autre exemple

La commande `984` réserve le stock, autorise NT$248, puis demande l'expédition. L'expédition rejette l'adresse. La saga annule l'autorisation et libère le stock avec le même ID de saga. Elle enregistre ensuite la commande comme compensée.

Parties principales

  1. 01ID de Saga et état
  2. 02Services participants
  3. 03Transactions locales
  4. 04messages de résultat
  5. 05Nouvelle tentative ou compensation
  6. 06Audit et récupération manuelle

Utilisez-le lorsque

Utilisez une saga lorsqu’un travail métier s’étend sur plusieurs services ou magasins de données. Ne l’utilisez que lorsqu’une étape de base de données « tout ou rien » ne peut couvrir l’ensemble du travail. Définissez chaque étape sauvegardée, l’action suivante, la réessai, l’action de correction et l’état final.

Ne l'utilisez pas lorsque

N'ajoutez pas de saga lorsqu'une sauvegarde unique dans la base de données peut terminer tout le travail. Une action de correction est un nouveau travail. Elle peut échouer ou donner un résultat différent. Demandez à une personne lorsque qu'une action est dangereuse à annuler.

Nom utilisé dans le code

saga ID + local transaction -> next step; failure -> retry | compensation -> terminal state

Avant d'expédier

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.

Demande que vous pouvez copier

Outcome: Complete the task with Modèle Saga (Saga Pattern). User context: La commande `984` réserve le stock, autorise NT$248, puis demande l'expédition. L'expédition rejette l'adresse. La saga annule l'autorisation et libère le stock avec le même ID de saga. Elle enregistre ensuite la commande comme compensée. Technical concept or control: Modèle Saga (Saga Pattern). Why it fits: Utilisez une saga lorsqu’un travail métier s’étend sur plusieurs services ou magasins de données. Ne l’utilisez que lorsqu’une étape de base de données « tout ou rien » ne peut couvrir l’ensemble du travail. Définissez chaque étape sauvegardée, l’action suivante, la réessai, l’action de correction et l’état final. Do not use it when: N'ajoutez pas de saga lorsqu'une sauvegarde unique dans la base de données peut terminer tout le travail. Une action de correction est un nouveau travail. Elle peut échouer ou donner un résultat différent. Demandez à une personne lorsque qu'une action est dangereuse à annuler. 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): Aucun standard officiel unique ne régit l’ensemble du terme. Sa signification peut varier selon les équipes, plateformes ou frameworks. 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.

Vérifiez cette demande

Review how Modèle Saga (Saga Pattern) is used now. Definition: Une saga relie plusieurs étapes sauvegardées en un seul travail métier. Si une étape ultérieure échoue, elle recommence ou ajoute une autre étape pour corriger ce qui s’est passé précédemment. 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.

C
Ce terme est-il officiel ?

Convention industrielle

Les gens utilisent souvent ce terme au travail. Les sources listées peuvent soutenir la pratique ou les limitations. Elles ne définissent pas toutes les parties du terme.

Aucun standard officiel unique ne régit l’ensemble du terme. Sa signification peut varier selon les équipes, plateformes ou frameworks.

Portée
Seulement ce que couvre la source:nom canonique、définition、mise en œuvre、guide d'utilisation、directives d'évitement
Statut du document
stable
Coché activé
2026-07-30

Sources et portée des preuves

Source faisant autorité + Référence de terme · Amazon Web Services · stable Saga patterns Portée: nom canonique、définition、mise en œuvre、guide d'utilisation、directives d'évitement Rôle ici: Référence directe au terme La source couvre: nom canonique, définition, mise en œuvre, guide d'utilisation, directives d'évitement Source de l’arrière-plan Azure Architecture Center — Compensating Transaction pattern Rôle ici: Contexte utile, pas une définition

Copiez-le vous-même

Le navigateur n'a pas pu copier ceci. Sélectionnez la requête ci-dessous et copiez-la vous-même.