sagaは、複数のサービスにまたがるビジネストランザクションをローカルトランザクションのシーケンスとして管理します。ステップが失敗した場合、sagaは補償トランザクションを実行して前のステップを取り消します。分散ロールバックはありません。
なぜ分散トランザクションではないのか?
サービス間の2フェーズコミットは遅く、リソースをロックし、可用性を結合させます。sagaは分散ロックなしに結果整合性を提供します。
コレオグラフィー(イベント駆動)
サービスは相互のイベントに反応します。中央コーディネーターはありません。
text
Order ─OrderCreated→ Payment ─PaymentDone→ Inventory ─Reserved→ Shipping
◀───────── (on failure, each emits a compensating event) ─────────
オーケストレーション(中央コーディネーター)
オーケストレーターは各サービスに何をすべきかを指示し、結果に反応します。
