1) コーディネーターノードがすべての参加ノードに「コミット」リクエストを発行します。 2) 参加ノードが正式に操作を完了し、トランザクション期間中に占有していたリソースを解放します。 3) 参加者ノードがコーディネーターノードに「完了」メッセージを送信します。 4) コーディネーターノードは、すべての参加者ノードから「完了」メッセージのフィードバックを受け取った後にトランザクションを完了します。
1) コーディネーターノードがすべての参加ノードに「ロールバック」リクエストを発行します。 2) 参加ノードは以前に書かれたUndo情報を使ってロールバックを行い、トランザクション期間中に占有していたリソースを解放します。 3) 参加ノードがコーディネーターノードに「ロールバック完了」メッセージを送信します。 4) コーディネーターノードは、すべての参加者ノードから「ロールバック完了」メッセージのフィードバックを受け取った後、トランザクションをキャンセルします。
1. 同期ブロッキング問題。 実行中、すべての参加ノードがトランザクションブロッキングを行います。 参加者が公共リソースを占有している場合、他の第三者ノードがその公共リソースにアクセスするのをブロックしなければなりません。 2. 単一障害点。 コーディネーターの重要性から、コーディネーターが失敗すると、 参加者は引き続きブロックを妨害します。 特に第2段階では、コーディネーターが失敗した場合、すべての参加者が依然としてトランザクションリソースをロックした状態にあり、トランザクション操作を継続できません。 (コーディネーターが電話を切った場合、コーディネーターを再選できますが、コーディネーターがダウンして参加者がブロックされる問題は解決しません) 3. データの不一致。 コミットの第2段階の第2段階では、コーディネーターが参加者にコミット要求を送信すると、ローカルネットワークの例外が発生したか、コミット要求プロセス中にコーディネーターが失敗し、一部の参加者のみがコミット要求を受け入れます。 コミットリクエストを受け取った後、これらの参加者はコミット操作を実行します。 しかし、コミットリクエストを受け取らない他のマシンはトランザクションコミットを実行することはできません。 その結果、データ部門の整合性は分散システム全体で実現します。 4. 第2段階で解決できない問題:コミットメッセージを送信した後にコーディネーターがダウンし、そのメッセージを受け取った唯一の参加者もダウンします。 したがって、ファシリテーターが選挙合意を通じて新しいファシリテーターを選出しても、取引の状況は不確実であり、取引が提出されたかどうかは誰にも分かりません。
1. PreCommitリクエストを送信 ファシリテーターは参加者にPreCommitリクエストを送信し、PrePreyステージに進みます。 2. トランザクション事前コミット 参加者が事前コミット要求を受け取った後、トランザクション操作を実行し、取り消し再実行情報をトランザクションログに記録します。 3. 応答フィードバック 参加者がトランザクション操作を正常に実行した場合、最終命令を待ちながらACK応答が返されます。
1. 割り込みリクエストを送信 ファシリテーターはすべての参加者に中止リクエストを送信します。 2. トランザクションを中断する 参加者がコーディネーターからABORTリクエストを受け取った後(またはタイムアウト後にコーディネーターからのリクエストが受信されていない場合)、トランザクションの中断が実行されます。
1. コミットリクエストを送信 コーディネーションは参加者から送信されたACK応答を受け取り、その後、プレコミット状態からコミット状態へ移行します。 そしてすべての参加者にdoCommitリクエストを送信します。 2. トランザクション提出 doCommitリクエストを受信した後、参加者は正式なトランザクションコミットを実行します。 トランザクションコミット完了後にすべてのトランザクションリソースを解放します。 3. フィードバックへの応答 トランザクションが提出された後、コーディネーターにAck応答を送信します。 4. トランザクション完了 コーディネーターが全参加者からACK応答を受け取った後、トランザクションは完了します。
1. 割り込みリクエストを送信 ファシリテーターが全参加者に中止リクエストを送信します 2. トランザクションロールバック ABORTリクエストを受け取った後、参加者はフェーズ2で記録された元に戻し情報を使ってトランザクションロールバック操作を行い、ロールバック完了後にすべてのトランザクションリソースを解放します。 3. フィードバック結果 参加者がトランザクションロールバックを完了した後、コーディネーターにACKメッセージを送信します 4. トランザクションを割り込む コーディネーターが参加者からACKメッセージを受け取った後、トランザクションは中断されます。