0

私はモハマドの修士号です 私は動物園について質問したいと思います。apache zookeeperについて質問する

私はzookeeperの書き込み操作が最初に行われることを読んだが、cliendに接続しているサーバーはリーダーに連絡してからリーダーが投票を行い、サーバーの半分以上を取得するとサーバーに応答するこのオペレーションを続けるためにcliendに接続されています。

しかし、私の質問は、投票のプロセスは何ですか?私は彼らが何のために投票するのですか? 2番目の質問は、どのように投票するのか、メッセージを送信するのか、どのようにしてリーダーに通知するのかということです。 3番目の質問は、なぜ彼らは投票が必要なのですか?私は、更新データをチェックするためにバージョン番号がinorderであることを読んでいます。なぜ彼らは投票を必要としますか?

できるだけ早く私に返信してください。

ありがとうございます。

答えて

1

これは私ができるだけ速いです。これらのシステムの仕組みをより深く理解するためには、Nancy Lynchの本「Distributed Algorithms」を入手する必要があります。

背景 - Zookeeperには独自の実装がありますが、アルゴリズムのパラダイムはPaxosと呼ばれていますが、これは少し異なります。 Zookeeperは、2段階のコミットでデータをコミットします。すべての通信は、順序を保持するためにFIFOチャネル上のアトミックブロードキャストプロトコルを使用して行われます。

投票プロセスとは何ですか - 投票プロセスは、2段階コミットではないリーダーを見つけるためのプロセスです。いいえ、投票はありません。最高のzxidを持つノードがリーダーです。

リーダー選挙のための投票です。 2段階のコミットは書き込み操作用です。さらに詳しい情報は、動物園のドキュメントやもっと重要なことにdistg algosの本をチェックしてください。

--Sai

+0

実際には、2フェーズコミットにも投票があります。フォロワーはコミットに「投票」します。コミットに「投票」した十分なフォロワーが存在する場合、マスターは書き込みをコミットできます。この場合、すべてのクォーラム(サーバーの半数以上)で少なくとも1台のサーバーがコミットを認識していることが保証されています。 –

+0

ああ本当です..私の答えを修正していただきありがとうございます:) –

1

の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接続を介して行われます。サービスは、信頼性と耐障害性であるためには、データをサーバーのクォーラムにレプリケートする必要があります。

関連する問題