FLP 定理にもかかわらず、Raft などの分散コンセンサスアルゴリズムは現実の世界でどのように利用されていますか?
FLP (Fischer 、 L
ynch と P
aterson) 不可能性は、分散技術の最も基本的な目的の 1 つであり、多くのコンピューティング学部プログラムで教えられてきました。 情報と計算の規模を考えると、分配された手法 (より多くのマシンでサービスをスケーリングする) は、現在、スケーラブルなシステム インフラストラクチャを作成するために使用されるデフォルトのパターンです。 分散コンセンサスは、マシンが一貫したキャリアを提供するために一定の通知に同意する必要があるため、よく知られています.
FLP定理は、コンセンサスに関する次の基本的な問い合わせに答えます:
非同期支払いシステムにおいて、おそらく決済を実現する決定論的コンセンサスアルゴリズムはありますか?有効性、終了、耐障害性は?
理論内の「不可能」な期間が示唆するように、フィッシャー、リンチ、パターソンは、それがまさに今であることを示しました。おそらく、単一のノード障害さえも許容するパワーコンセンサスアルゴリズムを組み込むことはもうないでしょう.
Raft や Zookeeper などの既存のコンセンサス アルゴリズムが現在、大規模な分散技術で定期的に使用されている場合、分離ノードの障害は、最も単純な通常の状態ではなくなりますが、 さらに、FLP の結果も直観に反し、さらには複雑になります。 私も、Raft について学んでいるときに、理論上の FLP の結果と正しい世界のコンセンサス アルゴリズムとの間のこの断絶に直面しました。 このテキストを書いて、私は光を当てることを望んでいます
FLP定理の関数ビュー 正しい世界のテクニックのコンテキスト内.
では、なぜ私たちは支払われたコンセンサスセルフに関して望んでいるのですか? -規律? 支払いシステムでは、多様化されたマシン (ノード) は、確実に、通知された決済の捏造を防御する必要があります。 間違いなく、分配されたコンセンサスには多くの形式があります — 分配された技術では、コンセンサスのこれらの変種のうちの1つに直面することは避けられません。 コンセンサスと同義であることが示されている合併症の例は次のとおりです。
- 共有ログ(レプリケートされたログ技術で)
- アトミック ブロードキャスト (例: ウェルノウン ノードはセカンダリ ノードに操作をブロードキャストします。既知/セカンダリ レプリケーション)
ウェルノウン/セカンダリ レプリケーションの詳細については、以下を参照してください:
より早く関数レンズで FLP 定理を再構成することができます。今、私たちは最初に不可能性定理の主張と、T
非同期ネットワークマネキン
本質的に、FLP 不可能性定理の最も一般的な前提条件は、非同期コミュニティ マネキンです。 非同期マネキンの特徴は何ですか?同期マネキンとどう違うのですか?
非同期コミュニティのマネキンの下で、私たちは何の発信もしていませんもはや自分だけのノード障害検出
非同期でマネキンの場合、あるノードから別のノードへのメッセージの伝播は有限ですが、制限はありません。 ノードがメッセージをフェッチしなくなった場合、送信者ノードがクラッシュしたかどうか、または実際に購入したメッセージが遅延したかどうかを正確に判断できなくなります。 つまり、ノードがクラッシュしたかどうか、またはタイムアウト メカニズムに完全に基づいていないかどうかを正確に解決することはできなくなりました。 違いは、同期コミュニティ アイテムでは、メッセージの遅延が制限され、ノードのクラッシュも確実に検出されます。
- 非同期コミュニティ設定の下で、FLP の定理はさらに i) メッセージ チャネルの発信元がメッセージをドロップしない ii) 非-ビザンチン障害 (悪意のあるイベントはないようです).
- 不可能のトライアングル
FLP定理:非同期コミュニティ マネキンの下で同時に 3 つのプロパティすべてを所有することはもうありません。非同期コミュニティ マネキンの下で、FLP 定理は、もはや終了、同意、およびフォールト トレランスの 3 つのプロパティすべてを終了することはできないと主張しています。 3 つのプロパティを次のように説明します。
- Termination (Liveness): 最終決定時にすべてのノード (失敗していないもの)。
- 合意(安全): 決定するすべてのノード (決定後に失敗したノードも含む) は、同一の価格で冷静に決定する必要があります。 すべてのノードが同一の初期入力を所有している場合、その価格は実行可能な最高の決定価格でなければなりません.
- 耐障害性: すべてのノードは、ノード障害が発生した場合に備えて、プロトコルがさらに効率的でなければならないことを必要とします.
- FLP定理が主張していないことを隠して表示それか:
- 分散コンセンサスは、おそらくもはや正常ではありません. 上記の 3 つの物件のいずれも所有する予定はありません。 間違いなく、Raft は同意とフォールト トレランスの両方を所有できることを示しましたが、それでももはや終了ではありません。
代わりに、FLP 定理は次のように主張します:
非同期コミュニティ マネキンの下で、3 つのプロパティすべてを同時に所有することはもうありません。
- 同期コミュニティ マネキンよりもはるかに下 (設定されたメッセージの遅延は制限されています)、必要な 3 つの特性すべてを満たすアルゴリズム.
含意:
現実の世界では、私たちは 犠牲を消すことができます(3 つのプロパティのうちの 1 つ) または乱れのない制約 (非同期マネキンなど) に到達するために、業界のニーズを満たすコンセンサス アルゴリズム。 最新のコンセンサスアルゴリズムがこれらのトレードオフをどのように解消するかについては、次のフラグメントで説明できます.
FLP が何であるかを認識したので、定理が主張しているのは、最終的に機能的なレンズを構築し、この情報を正しい世界のテクニックに実践する方法に署名できるということです! 古いフラグメント内で、非同期マネキンの制約を確実に解消できると考えられるようになりました。 甘やかされて下の表は、非同期マネキンによって作成された制約を、正しい世界の分配された手法で調べます.
正しい世界のシステムは、部分的な同期をサポートしています。コミュニティ マネキンの場合、タイムアウト メカニズムを介して、設定された失敗も合理的に確実に検出されます。
興味深いことに、実際の世界では、非同期マネキンのよりリラックスしたモデルを確実に所有しており、設定された障害も適切に検出されます。タイムアウトメカニズムを介して。 したがって、事前に決定されたタイムアウトは、この部分的に同期したコミュニティ マネキンのメッセージの遅延に対して、特定の人が設定可能な蛇行として機能します。
さらに、実際には、コンセンサス アルゴリズムは、不可能な三角形の 3 つのプロパティのうちの 1 つを犠牲にすることを確実に決定します。 分散型システムでは、ノードの障害はほぼ避けられません。 したがって、フォールト トレランスを常に考慮する必要があります。 コンセンサス プロトコルが最も単純に、フォールト トレランスを起動するために終了プロパティと決済プロパティの両方を所有できるという FLP の不可能な方法。ラフトとして図では、フォールト トレランスと決済プロパティを終了するために終了を犠牲にしています (考えてみれば、Raft の主任選挙が分割投票を無限に繰り返すことで、中断することはありません)。 プロトコルが終了せず、開発が行われなくなる可能性を最小限に抑えるために、Raft はランダム化された選出タイムアウトを利用します。 間違いなく、無作為化されたアルゴリズムは、多くのコンセンサス アルゴリズムにおける通常の戦略です。𝚆𝚊𝚝𝚌𝚑 𝙽𝙾𝚆 📺
- チーフ選挙 (Raft などでチーフ/ウェルノウン ノードに変更するノードを選出するのに弱い)