分散コンピューティングでは、コンセンサス問題は集中的な研究を集めている中心的なトピックの1つであるようです。特に、「1つの障害のあるプロセスによる分散コンセンサスの不可能性」という論文は、2001 PODC Influential Paper Awardを受賞しました。
それでは、なぜコンセンサス問題がそれほど重要なのでしょうか?理論的にも実際的にもコンセンサスで何を達成できますか?
参照や説明は本当に役立つでしょう。
分散コンピューティングでは、コンセンサス問題は集中的な研究を集めている中心的なトピックの1つであるようです。特に、「1つの障害のあるプロセスによる分散コンセンサスの不可能性」という論文は、2001 PODC Influential Paper Awardを受賞しました。
それでは、なぜコンセンサス問題がそれほど重要なのでしょうか?理論的にも実際的にもコンセンサスで何を達成できますか?
参照や説明は本当に役立つでしょう。
回答:
あなたが言及する論文は2つの理由で重要です:
用途
コンセンサス問題の重要な用途の1つは、グローバルなアクションを開始するためのフォールトトレラント環境でのコーディネーターまたはリーダーの選出です。コンセンサスアルゴリズムを使用すると、事前に「スーパーノード」を修正することなく、オンザフライでこれを実行できます(これにより、単一障害点が発生します)。
別のアプリケーションは、分散ネットワークの一貫性を維持しています。同じ環境を監視する異なるセンサーノードがあるとします。これらのセンサーノードの一部がクラッシュした場合(またはハードウェア障害により破損したデータの送信を開始した場合)、コンセンサスプロトコルにより、そのような障害に対する堅牢性が保証されます。
(*)分散アルゴリズムの実行は、一連の構成です。構成は、プロセスのローカル状態のベクトルです。各プロセスは決定論的な状態マシンを実行します。正しいコンセンサスアルゴリズムは、最終的にすべてのプロセスが同じ入力値を(変更できないように)決定する構成に到達する必要があります。コンフィギュレーション・ある1 - 価、もし敵が何をするかに関係なく、すべての可能な拡張子のCの判定値にリード1。同様に、我々は定義することができます0 - 価を。両方の決定がCから到達可能な場合、構成Cは二価です。(2つのうちのどちらに到達するかは、敵によって異なります)。明らかに、二価の構成で決定できるプロセスはありません。そうしないと、合意に矛盾することになります。したがって、このような二価の構成の無限シーケンスを構築できる場合、この設定にはコンセンサスアルゴリズムがないことが示されています。
フォールトトレラントな決定論的アルゴリズムがないことを示しています。かなり強力な理論的結果であり、設計者はフォールトトレランスに対処する必要があります。フォールトトレランスの一部は同期とランダム化です。
コメント:私の意見では、同期はシステムの追加の仮定であり、実際のアプリケーションではほとんど見られません。
参照については、Wikipediaリンクを確認してください。実用的なアプリケーションについては、このブログもご覧ください
コンセンサス問題が重要な理由の1つは、それらが非常に単純であり、分散コンピューティングシステムの普遍的な問題の一種であるということです。
非同期分散システムでコンセンサスを解決できる場合、それを使用して共有オブジェクトのアクションを線形化し、共有オブジェクトの線形化可能性を取得できます。
簡単にするために、値に同意するよりも簡単な問題をいくつ考えられますか?
(純粋な)非同期分散システムでのコンセンサスに関する不可能性の結果は、(純粋な)非同期分散システムで解決したい問題を「追加」なしでは解決できないことを示しています。これにより、ランダムモデル、障害検出器、部分同期モデルなどのコンセンサスを解決できる非同期モデルにつながります。
これは、実際に、LamportのPaxos、GoogleのChubby、Apache ZooKeeper、そして最近ではRaftのようなコンセンサスを解決するアルゴリズムが、サーバー間で状態を複製したい分散システムの中核にある理由でもあります。
多くのCPU、マシン上の多くのプロセス、LANで接続された多くのマシン、インターネットで接続された多くのLANなど、計算の性質がスタック全体にますます分散されていることを付け加えます。
これにより、共通(分散/グローバル)状態の問題が最重要になります。各アルゴリズムは特定の状態を想定し、計算を複数の場所で実行する場合は、状態も分散する必要があります。
このドメインの有力な論文(Paxos、最近ではRaft)は、引用している論文の後に公開されました。両方とも、いくつかの障害が存在する場合のコンセンサスの問題に対処します。
ビザンチンエラーは、いくつかのアプローチを使用して分散システムで回避できます。