ZooKeeper のユーザーは、リーダーを持つ ZooKeeper クラスターを気にしません。その実装の詳細。ZooKeeper サーバーは、サービスとしての ZooKeeper が提供する一貫性の保証の一部を実施する方法として、サーバー間でリーダーを選出します。
ZooKeeper のユーザー (または、より優れた API としての Curator のユーザー) としてのあなたは、それについてあまり気にしません。実際、ZK はこの実装の詳細を公開していません。リーダーと話しているのか、フォロワーと話しているのかわかりません。
この ZK 内部のリーダー選挙は、ZooKeeper が提供するサービスとしてのユース ケース、つまり ZooKeeper のユーザーのためのリーダー選挙とは何の関係もありません。
ZK を使用している場合、おそらく分散サービスを自分で構築しており、そのサービスは複数のマシンに分散されています。他の分散システムと同様に、ある時点 (タスクの調整など) で問題に直面する可能性がありますが、これはリーダー選出パターンによって一般的に解決されます。
この場合、先に進んで、リストされたアルゴリズムの 1 つを自分で実装できます。さらに良いことに、ZooKeeper などの調整サービスを使用することもできます。ZK api では、シーケンシャル ノードとエフェメラル ノードを使用してリーダー選出を実装できます。このレシピを見てください:
ご覧のとおり、ベア ZK API を使用してレシピを実装するのは簡単ではありません。そのため、Curator は、より簡単にするための優れたラッパーを提供しています。
要約すると、ZooKeeper のリーダー選出について話すとき、2 つの異なる点があります。
- 強力な一貫性を実装するメカニズムとして、ZK サーバーによって内部的に行われるリーダーの選出
- ZooKeeper のユーザーに提供される機能としてのリーダー選出。ZK プリミティブを使用して手動で実装するか、キュレーター ライブラリで利用可能なレシピとして使用する必要があります。