14章合意

本書では、これまで分散システムにおける多くの概念について議論してきました。リンクやプロセスのような基礎から始めて、分散コンピューティングの問題を取りあげました。続いて障害モデルや障害検出機能、リーダーの選出に話題を広げ、一貫性モデルについても議論しました。すべてをまとめ上げて、分散システム探求の頂点を目指す準備がついに整いました。その頂点とは、分散合意です。

分散システムにおける合意アルゴリズムは、複数のプロセスがある値について合意に至ることを可能にします。FLPの不可能性(「8.5 FLPの不可能性」)は、完全に非同期なシステムでは限られた時間内に合意を保証するのは不可能であることを示しています。メッセージの配信が保証されているとしても、あるプロセスにとって、他のプロセスがクラッシュしているのか、または実行速度が遅くなっているのかを知ることは不可能です。

9章では、障害検出の精度と、素早く障害を検出できることとの間にはトレードオフが存在することを議論しました。合意アルゴリズムは非同期モデルを前提とし、安全性を保証しますが、外部の障害検出機能は他のプロセスに関する、その活性について保証する情報を提供できます[CHANDRA96]。障害検出は、いつも完全に正確であるとは限らないので、検出されるべきプロセスの障害に対して合意アルゴリズムが待機する状況や、障害が発生したと誤検出されたプロセスがあるために合意アルゴリズムが再起動される状況もあるでしょう。

たとえその一部のプロセスがクラッシュしたとしても、1つの参加プロセスによって提案された値に、プロセスたちは同意する必要があります。クラッシュせずにアルゴリズムのステップを実行し続ける場合、プロセスは正常であると言います。合意は、イベントを特定の順序で並べたり、参加プロセス間で一貫性を確保したりする際に、非常に便利です。合意を使用すると、どの値がクライアントに見えるかに関する確実性を失うことなく、ある値から次の値にプロセスが遷移するシステムを実現できます。 ...

Get 詳説 データベース ―ストレージエンジンと分散データシステムの仕組み now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.