ZooKeeper は、クライアントがサービスを利用するノード (つまり、マシン) であり、サーバーがサービスを提供するノードである単純なクライアント/サーバー モデルに従います。ZooKeeper サーバーのコレクションは、ZooKeeper アンサンブルを形成します。常に、1 つの ZooKeeper クライアントが 1 つの ZooKeeper サーバーに接続されます。各 ZooKeeper サーバーは、同時に多数のクライアント接続を処理できます。各クライアントは、接続されている ZooKeeper サーバーに定期的に ping を送信し、稼働中で接続されていることを通知します。問題の ZooKeeper サーバーは ping の確認応答で応答し、サーバーも動作していることを示します。クライアントが指定された時間内にサーバーから確認を受信しない場合、クライアントはアンサンブル内の別のサーバーに接続します。 Zookeeper のアーキテクチャを理解するには、これを確認してください
クライアントが特定の znode のコンテンツの読み取りを要求すると、クライアントが接続されているサーバーで読み取りが行われます。したがって、アンサンブルから 1 つのサーバーのみが関与するため、読み取りは迅速かつスケーラブルです。ただし、書き込みを正常に完了するには、ZooKeeper アンサンブルのノードの過半数が使用可能である必要があります。ZooKeeper サービスが開始されると、アンサンブルから 1 つのノードがリーダーとして選出されます。クライアントが書き込み要求を発行すると、接続されたサーバーはその要求をリーダーに渡します。次に、このリーダーは、アンサンブルのすべてのノードに同じ書き込み要求を発行します。ノード (クォーラムとも呼ばれます) の過半数がこの書き込み要求に正常に応答した場合、書き込み要求は成功したと見なされます。次に、書き込み要求を開始したクライアントに成功の戻りコードが返されます。アンサンブルでノードのクォーラムが利用できない場合、ZooKeeper サービスは機能しません。これをチェックして、書き込み操作の投票プロセスを理解してください
サービスの信頼性と拡張性を高めるために、サービスは一連のマシンに複製されます。ZooKeeper は有名な Paxos アルゴリズムのバージョンを使用して、レプリカの一貫性を保ちます。
Zookeeper は次の一貫性を保証します
クライアントからの順次整合性更新は、送信された順に適用されます。
Atomicity Updates は、成功するか失敗するかのどちらかです。部分的な結果はありません。
単一システム イメージクライアントは、接続先のサーバーに関係なく、サービスの同じビューを表示します。
信頼性更新が適用されると、その時点からクライアントが更新を上書きするまで保持されます。この保証には 2 つの結果があります。
適時性 システムのクライアント ビューは、特定の時間内 (数十秒程度) で最新であることが保証されます。システムの変更がこの範囲内でクライアントに表示されるか、クライアントがサービスの停止を検出します。
ここにあなたの質問への答えがあります
質問1 : 書き込み操作をコミットするかどうかの投票です。
質問2 : Zookeeper アンサンブル内のクライアントとサーバー間の通信は、 ZAB プロトコルを使用したメッセージ交換を通じて TCP 接続を介して行われます。
質問3 : サービスの信頼性と耐障害性を高めるには、データをサーバーのクォーラムにレプリケートする必要があります。