分散コンピューティングにおいてコンセンサス問題がなぜそれほど重要なのですか?


19

分散コンピューティングでは、コンセンサス問題は集中的な研究を集めている中心的なトピックの1つであるようです。特に、「1つの障害のあるプロセスによる分散コンセンサスの不可能性」という論文は、2001 PODC Influential Paper Awardを受賞しました

それでは、なぜコンセンサス問題がそれほど重要なのでしょうか?理論的にも実際的にもコンセンサスで何を達成できますか?

参照や説明は本当に役立つでしょう。

回答:


18

あなたが言及する論文は2つの理由で重要です:

  1. 単一のクラッシュフォールトを許容する非同期の決定論的コンセンサスアルゴリズムがないことを示しています。注意していることを、同期設定、決定論的なアルゴリズムがあるという点で終了ラウンドfがクラッシュを処理します。f+1f
  2. 構成の二および一価(*)を導入します。これは、後の多くの下限および不可能性の証明で使用されます。

用途

コンセンサス問題の重要な用途の1つは、グローバルなアクションを開始するためのフォールトトレラント環境でのコーディネーターまたはリーダーの選出です。コンセンサスアルゴリズムを使用すると、事前に「スーパーノード」を修正することなく、オンザフライでこれを実行できます(これにより、単一障害点が発生します)。

別のアプリケーションは、分散ネットワークの一貫性を維持しています。同じ環境を監視する異なるセンサーノードがあるとします。これらのセンサーノードの一部がクラッシュした場合(またはハードウェア障害により破損したデータの送信を開始した場合)、コンセンサスプロトコルにより、そのような障害に対する堅牢性が保証されます。


(*)分散アルゴリズムの実行は、一連の構成です。構成は、プロセスのローカル状態のベクトルです。各プロセスは決定論的な状態マシンを実行します。正しいコンセンサスアルゴリズムは、最終的にすべてのプロセスが同じ入力値を(変更できないように)決定する構成に到達する必要があります。コンフィギュレーション・ある1 - 、もし敵が何をするかに関係なく、すべての可能な拡張子のCの判定値にリード1。同様に、我々は定義することができます0 - 価を。両方の決定がCから到達可能な場合、構成C二価です。C1C10CC(2つのうちのどちらに到達するかは、敵によって異なります)。明らかに、二価の構成で決定できるプロセスはありません。そうしないと、合意に矛盾することになります。したがって、このような二価の構成の無限シーケンスを構築できる場合、この設定にはコンセンサスアルゴリズムがないことが示されています。C


2
@AJed補足:Maurice Herlihyによる論文の同期について一目見たところ、コンセンサス問題の理論的意義をさらに1つ追加できます。コンセンサス番号の考え方を使用すると、同期プリミティブの無限の階層が存在することを示すことができます。そのため、あるレベルのプリミティブは、上位レベルのプリミティブの待機なしの実装には使用できません。簡単に言えば、コンセンサス問題は、原始的な同期操作の相対的なを定義する統一理論として解きます。エレガントです。
hengxin

1
FLPが不可能な結果の証拠を理解するのは困難です。ヒントを教えてください。[FLP proof](stackoverflow.com/q/15131730/1833118)を参照してください。ありがとう。
hengxin

「すべてのプロセスが決定した場所」は、「すべての正しいプロセスが決定した場所」である必要がありますか?
nbro

「敵が何をしても」敵が誰であるかを説明する必要があります。
nbro

「Cのすべての可能な拡張」、「Cの拡張」とはどういう意味ですか?一般に、構成の拡張とは何ですか?
nbro

7

フォールトトレラントな決定論的アルゴリズムがないことを示しています。かなり強力な理論的結果であり、設計者はフォールトトレランスに対処する必要があります。フォールトトレランスの一部は同期とランダム化です。

コメント:私の意見では、同期はシステムの追加の仮定であり、実際のアプリケーションではほとんど見られません。

参照については、Wikipediaリンクを確認してください。実用的なアプリケーションについては、このブログもご覧ください


1
はい、同期よりもランダム化を好みます。分散コンピューティングが動作する環境は、非同期、無制限の遅延、予期しない障害、および非決定的すぎるという意味で非常に貧弱です。完璧ではない限り、あまり複雑さを避けながら、いくつかの保証を達成して、ランダム化を使用してみませんか。
hengxin

1
同期といえば、理論上の仮定が好きではありません。ただし、業界では、同期または部分同期が頻繁に適用されます。たとえば、GoogleのSpannerは、グローバルに分散された同期複製データベースです。それは私にあまり決定的ではありません。あなたの意見は何ですか?
hengxin

同期がどのように実装されているかを見る方が良いと思います。しかし、それは非常に興味深いリファレンスです。-つまり、システムの自然な特徴ではありません。追加する必要があります。
AJed

一般に、Wikipediaを参照として提供すべきではありません。私はそのウィキペディアの記事を読んだところです。それはかなり不完全で整理されていません。また、混乱を招く可能性があります。
nbro

5

コンセンサス問題が重要な理由の1つは、それらが非常に単純であり、分散コンピューティングシステムの普遍的な問題の一種であるということです。

非同期分散システムでコンセンサスを解決できる場合、それを使用して共有オブジェクトのアクションを線形化し、共有オブジェクトの線形化可能性を取得できます。

簡単にするために、値に同意するよりも簡単な問題をいくつ考えられますか?

(純粋な)非同期分散システムでのコンセンサスに関する不可能性の結果は、(純粋な)非同期分散システムで解決したい問題を「追加」なしでは解決できないことを示しています。これにより、ランダムモデル、障害検出器、部分同期モデルなどのコンセンサスを解決できる非同期モデルにつながります。

これは、実際に、LamportのPaxos、GoogleのChubby、Apache ZooKeeper、そして最近ではRaftのようなコンセンサスを解決するアルゴリズムが、サーバー間で状態を複製したい分散システムの中核にある理由でもあります。


0

多くのCPU、マシン上の多くのプロセス、LANで接続された多くのマシン、インターネットで接続された多くのLANなど、計算の性質がスタック全体にますます分散されていることを付け加えます。

これにより、共通(分散/グローバル)状態の問題が最重要になります。各アルゴリズムは特定の状態を想定し、計算を複数の場所で実行する場合は、状態も分散する必要があります。

このドメインの有力な論文(Paxos、最近ではRaft)は、引用している論文の後に公開されました。両方とも、いくつかの障害が存在する場合のコンセンサスの問題に対処します。

ビザンチンエラーは、いくつかのアプローチを使用して分散システムで回避できます。

見ていビザンチン将軍問題のWikipediaのエントリを


FLPの不可能性の結果は、最も基本的な障害(クラッシュ)の設定にも適用されるため、ビザンチン障害の回避に関する段落のポイントが何であるかわかりません。失敗がなければ、コンセンサスはかなり簡単です。1つの固定プロセスがその値をブロードキャストし、各プロセスが値を受信するとすぐに決定することに注意してください。
カベ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.