2PCなしの分散トランザクション: ホテル予約システムにおける補償ワークフロー
問題: ホテル予約における分散トランザクション ホテル予約システムを基本的なコンポーネントに分解してみましょう: * 予約サービス: 部屋の空き状況と予約を管理 * 支払いサービス: 支払いを処理 * 通知サービス: 確認メールを送信 * ロイヤルティサービス: 顧客のポイントを更新 さて、顧客が部屋を予約するシナリオを想像してみてください。私たちは以下を行う必要があります: 1. 部屋の空き状況を確認し、予約する 2. 支払いを処理する 3. 確認メールを送信する 4. 顧客のロイヤルティポイントを更新する 簡単に聞こえますよね?でも、そう簡単ではありません。支払いが失敗した場合、または通知サービスがダウンしている場合はどうなるでしょうか?これが分散トランザクションの世界で、マーフィーの法則が常に働いています。 サガの登場: 分散トランザクションの無名のヒーロー サガは、各トランザクションが単一のサービス内でデータを更新する一連のローカルトランザクションです。ステップが失敗した場合、サガは前のステップで行われた変更を元に戻す補償トランザクションを実行し...