応用情報技術者 2024年 秋期 午前2 問27
問題文
2相コミットで分散トランザクションの原子性を保証する場合、ネットワーク障害の発生によって参加者のトランザクションが、コミットすべきか又はロールバックすべきかを判断できなくなることがある。このような状況を発生させるネットワーク障害に関する説明として、適切なものはどれか。
選択肢
ア:調停者のトランザクションが、コミット又はロールバック可否の問合せを参加者に送る直前に障害になった。
イ:調停者のトランザクションが、 コミット又はロールバックの決定を参加者に送る直前に障害になった。(正解)
ウ:調停者のトランザクションに、 コミット又はロールバック可否の応答を参加者が返す直前に障害になった。
エ:調停者のトランザクションに、 コミット又はロールバックの完了を参加者が返す直前に障害になった。
2相コミットで分散トランザクションの原子性を保証する場合のネットワーク障害【午前2 解説】
要点まとめ
- 結論:調停者がコミットまたはロールバックの決定を参加者に送る直前に障害が起きると、参加者は判断不能状態になる。
- 根拠:2相コミットは調停者の決定通知が全参加者に届くことが前提であり、通知が届かないと状態が不確定になる。
- 差がつくポイント:障害発生のタイミングを正確に理解し、どの段階で参加者が判断不能になるかを押さえることが重要。
正解の理由
イは、調停者が「コミットまたはロールバックの決定」を参加者に送る直前に障害が発生した状況を示しています。
この段階で障害が起きると、参加者は調停者の最終決定を受け取れず、トランザクションをコミットすべきかロールバックすべきか判断できなくなります。
これが2相コミットの「ブロッキング問題」の典型例であり、原子性保証の難しさを象徴しています。
この段階で障害が起きると、参加者は調停者の最終決定を受け取れず、トランザクションをコミットすべきかロールバックすべきか判断できなくなります。
これが2相コミットの「ブロッキング問題」の典型例であり、原子性保証の難しさを象徴しています。
よくある誤解
調停者が問い合わせを送る前や参加者の応答直前の障害では、参加者はまだ判断可能な状態にあります。
また、参加者が完了通知を返す段階の障害は、原子性の判断不能とは直接関係しません。
また、参加者が完了通知を返す段階の障害は、原子性の判断不能とは直接関係しません。
解法ステップ
- 2相コミットの流れを理解する(準備フェーズとコミットフェーズ)。
- 各選択肢の障害発生タイミングを確認する。
- 参加者が判断不能になるのは「決定通知が届かない場合」であることを認識する。
- 「決定通知を送る直前に障害が起きる」状況を選ぶ。
- 正解はイと判断する。
選択肢別の誤答解説
- ア:調停者が問い合わせを送る直前の障害は、参加者はまだ準備段階であり判断不能にはならない。
- イ:正解。決定通知が届かず参加者が判断不能になる典型的な障害。
- ウ:参加者が応答を返す直前の障害は、調停者が決定を下す前の段階であり、判断不能にはならない。
- エ:参加者が完了通知を返す直前の障害は、トランザクションの完了後の段階であり、原子性の判断不能とは無関係。
補足コラム
2相コミットは分散トランザクションの原子性を保証する代表的なプロトコルですが、調停者の障害やネットワーク障害により「ブロッキング問題」が発生します。
この問題を解決するために3相コミットやPaxosなどの非同期合意アルゴリズムが研究されています。
この問題を解決するために3相コミットやPaxosなどの非同期合意アルゴリズムが研究されています。
FAQ
Q: なぜ調停者の決定通知が届かないと参加者は判断できないのですか?
A: 参加者は調停者の最終決定を受けて初めてコミットかロールバックかを確定できるため、通知が届かないと状態が不確定になります。
A: 参加者は調停者の最終決定を受けて初めてコミットかロールバックかを確定できるため、通知が届かないと状態が不確定になります。
Q: 2相コミットで障害が起きた場合、どうやって復旧しますか?
A: 通常は調停者の復旧後にログを参照し、参加者に決定を再通知して状態を確定させますが、復旧まで待つ必要があり遅延が発生します。
A: 通常は調停者の復旧後にログを参照し、参加者に決定を再通知して状態を確定させますが、復旧まで待つ必要があり遅延が発生します。
関連キーワード: 2相コミット、分散トランザクション、原子性、ブロッキング問題、調停者、ネットワーク障害

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

