令和4年度 春期 ITサービスマネージャ試験 午前II 問23

図は,分散システムにおける2相コミットプロトコルの正常処理の流れを表している。③の動作はどれか。

分散システムにおける2相コミットプロトコルの正常処理の流れを表すシーケンス図
図の説明テキスト

分散システムにおける2相コミットプロトコルの正常処理の流れを表すシーケンス図。
・ライフラインとして「システム A」、「システム B」、「システム C」が存在し、システムAがコーディネータの役割を果たしている。
・左側には処理のフェーズがテキストと括弧で示されている。
・「トランザクションの開始」の入力後、「トランザクションのためのデータ転送」として、システムAからシステムB・Cへメッセージが送られ、それぞれからシステムAへ応答が返る。
・「トランザクション終了処理の開始」の入力後、以下のやり取りが行われる:

  • ①: システムAからシステムBおよびシステムCへのメッセージ
  • ②: システムBおよびシステムCからシステムAへの応答メッセージ
  • ③: システムAからシステムBおよびシステムCへのメッセージ
  • ④: システムBおよびシステムCからシステムAへの応答メッセージ
    ・最後に「トランザクションの終了」が出力される。
解答・解説

正解: ウ. コミット実行指示

分散システムにおける 2相コミットプロトコル は、複数のデータベースやシステムにまたがるトランザクションを矛盾なく完了(コミット)または取り消し(ロールバック)するための仕組みです。このプロトコルは、名前の通り大きく2つのフェーズ(第1フェーズと第2フェーズ)に分かれて処理が行われます。

図では、システムAが全体を制御する コーディネータ、システムBとシステムCが処理を実行する パーティシパント として動作しています。「トランザクション終了処理の開始」以降の流れは以下の通りです。

  • 第1フェーズ(コミット準備フェーズ)

    • ①: コーディネータ(システムA)から全パーティシパント(システムB、C)へ、コミットの準備ができたかを問い合わせます(コミット可否問合せ)。
    • ②: 各パーティシパントは、コミット処理の準備が整っていれば可能である旨を応答します。
  • 第2フェーズ(コミット実行フェーズ)

    • ③: すべてのパーティシパントからコミット可能の応答を受け取った後、コーディネータは全パーティシパントに対して実際にコミットを行うよう指示を出します(コミット実行指示)。
    • ④: 各パーティシパントはコミットを完了させ、完了の応答を返します。

本問は「正常処理の流れ」を表しているため、第2フェーズにおけるコーディネータ(システムA)からシステムBおよびシステムCへのメッセージである ③ の動作は「コミット実行指示」となります。

各選択肢の解説

  • ア(アンロック実行指示): 誤り。データのロック解除(アンロック)は、各システムでのコミット完了時に行われる処理の一部であり、コーディネータが直接指示するフェーズではありません。
  • イ(コミット可否問合せ): 誤り。これは第1フェーズにおける ① の動作に該当します。
  • ウ(コミット実行指示): 正解。すべての準備完了を確認したのちに出される、第2フェーズにおける ③ の動作です。
  • エ(ログ取得指示): 誤り。障害復旧等のためのログ記録は、各システムがそれぞれの処理過程において自律的に行います。プロトコルとしてログ取得を個別に指示するフェーズはありません。

Spineチーム