分散トランザクション全体で 2 フェーズ コミットがどのように機能するかを調べています。フェーズの最後の部分で、トランザクション コーディネーターが各ノードにコミットする準備ができているかどうかを尋ねることは、私の理解です。全員が同意した場合は、先に進んでコミットするように指示します。
次の失敗を防ぐものは何ですか?
- すべてのノードは、コミットする準備ができていると応答します
- トランザクション コーディネーターは「先に進んでコミットする」ように指示しますが、このメッセージを受け取る前にノードの 1 つがクラッシュします。
- 他のすべてのノードは正常にコミットされますが、分散トランザクションが破損しています
- クラッシュしたノードが戻ってきたとき、そのトランザクションはロールバックされていると私は理解しています (コミットメッセージを受け取っていないため)
各ノードは、分散トランザクションについて何も知らない通常のデータベースを実行していると想定しています。私は何を取りこぼしたか?