8

背景:

Lamport の論文Paxos Made SimpleのImplementing a State Machineという名前のセクション 3 では、Multi-Paxos が説明されています。Multi-Paxos は Google Paxos Made Liveで使用されます。( Multi-Paxos はApache ZooKeeperで使用されます)。Multi-Paxos では、ギャップが発生する可能性があります。

一般に、リーダーは先にコマンドを取得できると仮定します。つまり、コマンド 1 からコマンドが選択された後、コマンドを通じてコマンドαを提案できます。コマンドまでのギャップが発生する可能性があります。i + 1i + αiα - 1

ここで、次のシナリオを検討してください。

システム全体がマスタースレーブアーキテクチャを使用しています。マスターだけがクライアント コマンドを提供します。マスターとスレーブは、Multi-Paxos を介して一連のコマンドについて合意に達します。マスターは Multi-Paxos インスタンスのリーダーです。ここで、マスターとその 2 つのスレーブが次の図に示す状態 (コマンドが選択されている) であると仮定します。

マスターとスレーブ.

マスター状態には複数のギャップがあることに注意してください。非同期性のため、2 つのスレーブは遅れます。この時点で、マスターは失敗します。

問題:

  1. マスターの障害を (たとえば、ハートビート メカニズムによって) 検出した後、スレーブは何をすべきか?

  2. 特に旧マスターとのズレや不足しているコマンドをどう扱うか。

ザブについての更新:

@sbridges が指摘したように、ZooKeeperは Paxosの代わりにZabを使用します。引用すると、

Zab は主に、ステート マシンの複製用ではなく、ZooKeeper などのプライマリ バックアップ (マスター スレーブ) システム向けに設計されています。

Zab は上記の私の問題と密接に関係しているようです。Zab の簡単な概要論文によると、Zab プロトコルは 2 つのモードで構成されています。リカバリとブロードキャストです。回復モードでは、コミットされたメッセージを決して忘れないことと、スキップされたメッセージを手放すことの2 つの特定の保証が行われます。ザブについての私の混乱は次のとおりです。

  1. リカバリ モードでは、Zab もギャップの問題に悩まされますか? もしそうなら、ザブは何をしますか?
4

4 に答える 4