最近私は を学んPaxos
でいますが、今まではそれがどのように機能するかについての基本的な理解をすでに持っています。しかし、Paxos がパケット損失と新しいノードの参加をどのように処理するかを説明できる人はいますか? 簡単な例が提供されている場合は、より良いかもしれません。
3 に答える
パケット損失について、Paxos はネットワークに関する次の仮定を使用します。
メッセージが失われたり、並べ替えられたり、複製されたりする可能性があります。
これはクォーラムによって解決されます。システムが値を受け入れるためには、すべてのアクセプターのうち少なくとも X が値を受け入れる必要があります。これにより、ノードに障害が発生した場合の問題も解決されます。
新しいノードの参加について、Paxos はノードが他のノードを検出する方法に焦点を当てていません。これは、他のアルゴリズムによって解決される問題です。
すべてのノードとそれぞれの役割を自動的に認識します。
必要に応じて、製品コードの実装のために、Zookeeperを使用してこの新しいノードの検出を解決できます。
他の回答で指摘されているように、メッセージの損失またはメッセージの並べ替えはアルゴリズムによって処理されます。これらのケースを正確に処理するように設計されています。
新しいノードの参加は、「クラスター メンバーシップの変更」の問題です。クラスター メンバーシップの変更は Paxos でカバーされないという一般的な誤解があります。それでも、それらは 2001 年の論文Paxos Made Simpleの最後の段落で説明されています。このブログ投稿では、それについて説明します。新しいノードがクラスターに参加するときに、どのようにしてすべての状態のコピーを取得するかという問題があります。これについては、この回答で説明しています。