2

最近、ZooKeeper とその設計について学びました。ZooKeeper サービスが複数の ZooKeeper サーバーでサポートされていることは理解していますが、これらのサーバーの 1 つをグループのリーダーとして選択する必要があります。

次に、LeaderLatch と LeaderElection の Apache Curator レシピを調べ始めました。リーダーの選択についてではなく、リーダー (オーガナイザー) としてのプロセスの選択について話しています。

私はこれに困惑しています。Curator のレシピと ZooKeeper が 2 つの異なる種類のリーダーについて話している理由を説明してくれる人がいますか?

そして、彼らが実際に異なっているとすれば、これらのリーダーは互いにどのように関係しているのだろうか?

4

1 に答える 1

3

ZooKeeper のユーザーは、リーダーを持つ ZooKeeper クラスターを気にしません。その実装の詳細。ZooKeeper サーバーは、サービスとしての ZooKeeper が提供する一貫性の保証の一部を実施する方法として、サーバー間でリーダーを選出します。

ZooKeeper のユーザー (または、より優れた API としての Curator のユーザー) としてのあなたは、それについてあまり気にしません。実際、ZK はこの実装の詳細を公開していません。リーダーと話しているのか、フォロワーと話しているのかわかりません。

この ZK 内部のリーダー選挙は、ZooKeeper が提供するサービスとしてのユース ケース、つまり ZooKeeper のユーザーのためのリーダー選挙とは何の関係もありません。

ZK を使用している場合、おそらく分散サービスを自分で構築しており、そのサービスは複数のマシンに分散されています。他の分散システムと同様に、ある時点 (タスクの調整など) で問題に直面する可能性がありますが、これはリーダー選出パターンによって一般的に解決されます。

この場合、先に進んで、リストされたアルゴリズムの 1 つを自分で実装できます。さらに良いことに、ZooKeeper などの調整サービスを使用することもできます。ZK api では、シーケンシャル ノードとエフェメラル ノードを使用してリーダー選出を実装できます。このレシピを見てください:

ご覧のとおり、ベア ZK API を使用してレシピを実装するのは簡単ではありません。そのため、Curator は、より簡単にするための優れたラッパーを提供しています。

要約すると、ZooKeeper のリーダー選出について話すとき、2 つの異なる点があります。

  • 強力な一貫性を実装するメカニズムとして、ZK サーバーによって内部的に行われるリーダーの選出
  • ZooKeeper のユーザーに提供される機能としてのリーダー選出。ZK プリミティブを使用して手動で実装するか、キュレーター ライブラリで利用可能なレシピとして使用する必要があります。
于 2016-05-06T10:09:02.703 に答える