web-dev-qa-db-ja.com

リーダー選挙のためのパクソス対ラフト

パクソスとラフトペーパーを読んだ後、私は次の混乱を抱えています。ラフトのリーダー選出における単純なランダムタイムアウトアプローチに対するpaxosのアプローチの利点は何ですか?

12
Oliver Young

元のPaxosの論文では安定したリーダーを使用していないというのはよくある誤解です。 Lamportの「実装」というタイトルのセクションの6ページの Paxos Made Simple は、次のように書いています。

アルゴリズムは、優れた提案者と優れた学習者の役割を果たすリーダーを選択します。

これは単に、準備と約束のフェーズ1メッセージングを使用して達成されます。

次に、「ステートマシンの実装」セクションの9ページと10ページに次のように記載されています。

通常の運用では、単一のサーバーがリーダーとして選出され、コンセンサスアルゴリズムのすべてのインスタンスで、優れた提案者(提案を発行しようとする唯一のサーバー)として機能します。

ここでは、最も一般的な意味で「ステートマシン」という用語を使用しています。これは、キー値ストアやデータベースサーバーなど、ストアに適用されたアクションのログを複製する明白なケースをカバーしています。

ラムポートがPaxosを証明した方法が今のところ教えられているため、人々はこれについて混乱します。 Lamportは、Paxosと呼ばれるクラスのアプリケーションの正当性を、推論できる数学的モデルにまで削減することで証明しました。彼はこれを元の論文で「単一の法令会」と呼んだ パートタイム議会

パクソンの宗教指導者たちは、数学者にシノドスの法令を選択するためのプロトコルを策定するように求めました。プロトコルの要件と仮定は、一連の法令が含まれる代わりに、元帳が多くても1つの法令を持つことを除いて、後の議会と本質的に同じでした。結果のSynodプロトコルはここで説明されています。議会議定書はセクション3で説明されています。

その発言が混乱する場合でも、それは悪い冗談です。文字通り。これを自分の言葉で翻訳すると、次のようになります。

「コマンドのストリームを選択するためのコンセンサスアルゴリズムの正確さを証明するために、最初に、単一のコマンドを選択する数学モデルの正確さを示すことができます。次に、単一コマンドの数学モデルの仮定に違反しない限り、単一コマンドを選択するための数学モデルを、コマンドストリームを選択するための実用的なアルゴリズム(セクション3)に拡張できます。 – simbo1905

私の解釈を正当化するために、次のように述べている「複数の国会」というタイトルのセクション3を見てください。

パクソン議会はたった1つの法令を通過する代わりに、一連の番号付きの法令を通過させなければなりませんでした。 Synodプロトコルと同様に、大統領が選出されました。法令を通過させたい人は誰でも大統領に知らせ、大統領に番号を割り当てて通過させようとします。論理的には、議会の議定書は法令番号ごとに完全なSynodプロトコルの個別のインスタンスを使用していました。ただし、これらすべてのインスタンスに対して1人の大統領が選ばれ、彼はプロトコルの最初の2つのステップを一度だけ実行しました。

多段階アルゴリズムのため、Paxosをコンピューター科学者にとって興味深いものとして紹介した最初の「パートタイムパーリメント」論文の両方を強調します。議会議定書。それと明確化ペーパー「Paxos Made Simple」はどちらも、Paxosを一連のコマンドにシーケンス番号を割り当てる著名なリーダーがいると定義しています。さらに、著名なリーダーは、リーダーシップを引き受けるときにのみ「準備」メッセージを送信します。その後、定常状態では、著名なリーダーが「承認」メッセージのみをストリーミングします。彼はまた、ペーパーのどこで役割を折りたたみ、すべてのサーバーにアルゴリズムの3つの役割をすべて実行させるかについても述べています。

13
simbo1905

質問と@ simbo1905の回答を読んだ後、質問に回答したとは思わないので、2セントを投入しなければならないような気がします。

ラフトのリーダー選出における単純なランダムタイムアウトアプローチに対するpaxosのアプローチの利点は何ですか?

tl; dr:Paxosが最適ですが、Raftの生存性は実用的に保証されています。

詳細については、以下をお読みください。

ランポートが Paxos Made Simple のセクション3で述べているように、

Paxosコンセンサスアルゴリズムのフェーズ2は、障害がある場合に合意に到達するための任意のアルゴリズムの最小コスト [2] を持っていることを示すことができます。したがって、Paxosアルゴリズムは基本的に最適です。

そのため、Paxosは、障害がない場合に最大限の効率が得られる方法でコンセンサスを実装します。

一方、同じセクションで彼はまた述べています

複数のサーバーがリーダーであると考える場合、すべてのサーバーがコンセンサスアルゴリズムの同じインスタンスで値を提案できるため、値が選択されない可能性があります。ただし、安全性は保持されます。2つの異なるサーバーがi番目のステートマシンコマンドとして選択された値に同意することは決してありません。一人のリーダーの選出は、進歩を確実にするためだけに必要です。

つまり、実際にはPaxosは、その生存保証の違反を確認できます。

4
KeatsKelleher