のZooKeeperは、クライアントがサービスを利用するノード(すなわち、マシンが)ある簡単なクライアントサーバモデルに追従し、サーバがサービスを提供するノードです。 ZooKeeperサーバーのコレクションは、ZooKeeperアンサンブルを形成します。 1つのZooKeeperクライアントが1つのZooKeeperサーバーに接続されています。各ZooKeeperサーバは、同時に多くのクライアント接続を処理できます。各クライアントは、接続されているZooKeeperサーバーに定期的にpingを送信し、接続されていることを知らせます。問題のZooKeeperサーバーは、サーバーが生きていることを示すpingの確認応答を返します。クライアントが指定された時間内にサーバから確認応答を受信しなかった場合、クライアントはアンサンブル内の別のサーバに接続し、クライアントセッションは透過的に新しいZooKeeperサーバに転送されます。 Check thisが動物園のアーキテクチャを理解する
クライアントが特定のzノードの内容の読み取りを要求すると、クライアントが接続されているサーバーで読み取られます。結果として、アンサンブルからの1つのサーバしか関与していないので、読み取りは迅速かつスケーラブルである。ただし、書き込みが正常に完了するためには、ZooKeeperアンサンブルのノードの厳密な大半が使用可能である必要があります。 ZooKeeperサービスが起動すると、アンサンブルの1つのノードがリーダーとして選出されます。クライアントが書き込み要求を発行すると、接続されたサーバーはその要求をリーダーに渡します。次に、このリーダーはアンサンブルのすべてのノードに同じ書き込み要求を発行します。厳密に多数のノード(クォーラムとも呼ばれます)がこの書き込み要求に正常に応答すると、書き込み要求は成功したものとみなされます。成功したリターンコードは、書き込み要求を開始したクライアントに返されます。集合体でクォーラムのノードが利用できない場合、ZooKeeperサービスは機能しません。 Check this書き込み操作の投票プロセスを理解する
サービスが信頼性とスケーラビリティを持つためには、一連のコンピュータで複製されます。 ZooKeeperは有名なPaxosアルゴリズムのバージョンを使用して、レプリカの一貫性を保ちます。
飼育係は、次の一貫性は、送信された順序で適用されるクライアントから
シーケンシャル一貫アップデートを保証しています。
原子性アップデートの成功または失敗 - 部分的な結果はありません。
単一システムイメージクライアントには、接続先のサーバーに関係なく、サービスの同じビューが表示されます。
信頼性更新が適用されると、その時点からクライアントが更新を上書きするまで、その時点から継続されます。
適時性システムのクライアントビューは、特定の時間範囲(数十秒のオーダー)内で最新のものであることが保証されています。システムの変更は、この境界内のクライアントによって認識されるか、またはクライアントはサービス停止を検出します。ここで
は、あなたの質問
Question1です:投票は、書き込み操作がコミットすべきかどうかのためです。
Question2
は:飼育係のアンサンブルでのクライアントとサーバ間の通信は
ZAB protocol
Question3使用してメッセージの交換を通じてTCP接続を介して行われます。サービスは、信頼性と耐障害性であるためには、データをサーバーのクォーラムにレプリケートする必要があります。
実際には、2フェーズコミットにも投票があります。フォロワーはコミットに「投票」します。コミットに「投票」した十分なフォロワーが存在する場合、マスターは書き込みをコミットできます。この場合、すべてのクォーラム(サーバーの半数以上)で少なくとも1台のサーバーがコミットを認識していることが保証されています。 –
ああ本当です..私の答えを修正していただきありがとうございます:) –