27

Paxos の実際の使用例のリストを教えてください。それは、より大きな問題の一部としてコンセンサスを必要とする実際の問題です。

以下は Paxos の使用例ですか?

ポーカー サーバーで互いにポーカーをプレイしている 2 つのクライアントがあるとします。ポーカー サーバーが複製されます。私が Paxos について理解しているのは、現在のポーカーのハンドを表すメモリ内データ構造の一貫性を維持するために使用できるということです。つまり、すべてのレプリカが正確に同じハンドのメモリ内状態を持っていることを確認してください。

しかし、なぜ Paxos が必要なのでしょうか? 新しいカードを配る必要があるとします。すべてが正しければ、同じコードを実行する各レプリカは同じカードを生成します。クライアントがすべての複製されたサーバーから最新の状態を要求して、最も多く表示されるカードを選択できないのはなぜですか。そのため、1 つのサーバーにエラーが発生した場合でも、クライアントは過半数を選択するだけで正しい状態を取得できます。

4

5 に答える 5

15

すべてのサーバーが互いに同期している (つまり、同じ状態である) と仮定すると、サーバーが次のカードを選択する必要がある場合、各サーバーはまったく同じカードを選択します (コードが決定論的であると仮定します)。

ただし、サーバーの状態はユーザーのアクションにも依存します。たとえば、ユーザーが 50 ドルの資金調達を決定した場合、サーバーはその情報をどこかに保存する必要があります。ここで、サーバーが Web クライアントに「OK」と応答し (Web ベースのポーカー ゲームを想定しています)、サーバーがクラッシュしたとします。他のサーバーは 50 ドルの増額に関する情報を持っていない可能性があり、システムに一貫性がなくなります (クライアントは 50 ドルの増額が行われたと認識し、生き残ったサーバーはそれを認識していないという意味で)。

データが失われるため、ここでは過半数が役に立たないことに注意してください。さらに、メイン サーバーがクラッシュする代わりに、メイン サーバーと別のサーバーが 50 ドルの資金調達データを取得したとします。この場合、マジョリティを使用すると、さらに悪い結果になる可能性があります。2 つのサーバーからデータを含む応答が得られた場合、50 ドルのレイズが実行されたと考えることができます。しかし、そのうちの 1 つが失敗した場合、過半数を得ることはできず、レイズが行われなかったと考えるでしょう。

一般に、Paxos はフォールト トレラントな方法でステート マシンを複製するために使用できます。ここで、「ステート マシン」は、何らかの初期状態を持つアルゴリズムと考えることができ、外部 (つまり、Web クライアント) から受信したメッセージに従って決定論的に状態を進めます。

より正確には、Paxos は分散ログと見なされるべきです。詳しくは、ここで読むことができます: Paxos を理解する – パート 1

于 2013-09-22T13:08:00.653 に答える
5

実際のユースケース:

  1. ゆるく結合された分散システムのためのぽっちゃりロックサービス

  2. Apache ZooKeeper

于 2011-06-03T11:11:20.527 に答える
0

あなたが説明した場合、その通りです。Paxos は実際には必要ありません。単一の中央機関がデッキの順列を生成し、ハンドの開始時に全員に配布できます。実際、ポーカーのようにターン順序が厳密で 1 人のアクティブ プレイヤーが存在する一般的なポーカー ゲームでは、Paxos を使用する必要があるような賢明な状況は見当たりません。デッキをシャッフルします。

より良い例は、Jeopardy などの同時移動のゲームです。この状況で Paxos を使用すると、すべてのサーバーが同じ結論に達するように、一連の密接なタイミングのイベント (ブザーを押すなど) が発生した順序をすべてのサーバーが一緒に決定できます。

于 2011-06-03T07:10:09.927 に答える