質問

私はZookeeper、それがどのように機能し、それが何をするかを理解しようとしています。 Zookeeperに匹敵するアプリケーションはありますか?

ご存知の場合、Zookeeperを素人にどのように説明しますか?

私はZookeeper SourceForge、Apache Wikiを試しました...しかし、私はまだそれに関係することができません。

私はちょうどスルーを読みました http://zookeeper.sourceforge.net/index.sf.shtml, 、このようなサービスはもっとありませんか?サーバーサービスを複製するだけで簡単ですか?

役に立ちましたか?

解決

一言で言えば、Zookeeperは分散アプリケーションの構築を支援します。

使い方

Zookeeperを、最終的な一貫性を備えた複製された同期サービスとして説明できます。永続化されたデータは複数のノード(このノードのセットは「アンサンブル」と呼ばれる)間に分散され、1つのクライアントがそれらのいずれかに接続し(つまり、特定の「サーバー」)、1つのノードが失敗した場合に移行するため、堅牢です。ノードの厳密な大部分が機能している限り、Zookeeperノードのアンサンブルは生きています。特に、マスターノードは、アンサンブル内のコンセンサスによって動的に選択されます。マスターノードが失敗した場合、マスターの役割は別のノードに移行します。

書き方がどのように処理されますか

マスターは書き込みの権限です。このようにして、書面を順序に持続させることが保証されます。 線形. 。クライアントがアンサンブルに書き込むたびに、ノードの大部分が情報を保持します。これらのノードには、クライアント用のサーバー、そして明らかにマスターが含まれます。これは、各書き込みがサーバーをマスターと最新の状態にすることを意味します。しかし、それはまた、あなたが同時に書くことができないことを意味します。

Linear Writeの保証は、Zookeeperが重量のあるワークロードでうまく機能しないという事実の理由です。特に、メディアなどの大規模なデータの交換に使用しないでください。コミュニケーションに共有データが含まれる限り、Zookeeperがお手伝いします。データを同時に記述できる場合、Zookeeperは実際に邪魔になります。これは、作家の観点から厳密に必要ではない場合でも、運用の厳格な順序を課すためです。その理想的な使用は、クライアント間でメッセージが交換される調整のためのものです。

読み取り方法の処理方法

これは、Zookeeperが優れている場所です。クライアントが接続する特定のサーバーによって提供されるため、読み取りは同時に行われます。ただし、これが最終的な一貫性の理由でもあります。クライアントの「ビュー」は、対応するサーバーを境界があるが未定義の遅延で更新するため、時代遅れになる可能性があります。

詳細に

Zookeeperの複製されたデータベースは、のツリーで構成されています Znodes, 、これは、ファイルシステムノードを大まかに表すエンティティです(それらをディレクトリと考えてください)。各Znodeは、データを保存するバイト配列によって濃縮される場合があります。また、各Znodeにはその下に他のZnodeがあり、実際に内部ディレクトリシステムが形成されます。

シーケンシャルZnodes

興味深いことに、Znodeの名前はそうです 一連の, 、つまり、Znodeを作成するときにクライアントが提供する名前はプレフィックスのみです。フルネームは、アンサンブルによって選択されたシーケンシャル番号によっても与えられます。これは、たとえば、同期の目的で有用です。複数のクライアントがリソースのロックを取得したい場合、それぞれが場所にシーケンシャルZnodeを同時に作成できます。

はかないZnodes

また、Znodeはそうかもしれません 短命: :これは、それを作成したクライアントが切断されるとすぐに破壊されることを意味します。これは、クライアントがいつ失敗するかを知るために主に有用です。これは、クライアント自体が新しいクライアントがとるべき責任を持っている場合に関連する可能性があります。クライアントがロックが切断されるとすぐに、ロックの例を挙げて、他のクライアントはロックの資格があるかどうかを確認できます。

時計

クライアントの切断に関連する例は、Znodesの状態を定期的に投票する必要がある場合に問題がある場合があります。幸いなことに、Zookeeperはイベントシステムを提供します 見る Znodeで設定できます。これらの時計は、Znodeが特別に変更または削除された場合、または新しい子供がその下に作成された場合、イベントをトリガーするように設定される場合があります。これは、Znodesのシーケンシャルおよびはかないオプションと組み合わせて明らかに役立ちます。

どこでどのように使用するか

Zookeeperの使用法の標準的な例は分散メモリ計算であり、一部のデータはクライアントノード間で共有され、同期を考慮するために非常に慎重にアクセス/更新する必要があります。

Zookeeperはライブラリを提供して同期プリミティブを構築しますが、分散サーバーを実行する機能は、集中(ブローカーのような)メッセージリポジトリを使用する場合に発生する単一点の問題を回避します。

Zookeeperは機能が軽くなっています。つまり、リーダーの選挙、ロック、障壁などのメカニズムはまだ存在していませんが、動物園のプリミティブの上に書くことができます。 C/Java APIがあなたの目的に対して扱いにくい場合、あなたはZookeeperの上に構築されたライブラリに頼るべきです。 ケージ そして特に 学芸員.

続きを読む場所

公式ドキュメントは別に、これはかなり良いです、私は第14章を読むことをお勧めします Hadoop:決定的なガイド Zookeeperが基本的に説明し、その後に構成サービスの例を説明する約35ページのページがあります。

他のヒント

Zookeeperは、分散プロセスを確実に調整するのに役立つ最高のオープンソースサーバーとサービスの1つです。 Zookeeperは、CPシステム(CAP定理を参照)で、一貫性とパーティションの許容度を提供します。すべてのノードにわたるZookeeper状態の複製により、最終的に一貫した分散サービスになります。

さらに、新たに選出されたリーダーは、フォロワーが多くの提案を欠いている場合、提案の不足または州のスナップショットでフォロワーを更新します。

Zookeeperは、非常に使いやすいAPIも提供します。このブログ投稿、 Zookeeper Java APIの例, 、例を探している場合はいくつかの例があります。

では、これをどこで使用しますか?分散サービスには、集中型の信頼性が高く、一貫した構成管理、ロック、キューなどが必要な場合、Zookeeperは信頼できる選択肢になります。

私は一般的にZookeeperを理解していますが、「Quorum」と「Split Brain」という用語に問題がありました。

5つのサーバーのZookeeperクラスターがあるとしましょう。サーバーの1つがリーダーになり、他のサーバーがフォロワーになります。

  • これらの5つのサーバーは定足数を形成します。 Quorumは、単に「これらのサーバーが誰がリーダーになるべきかを投票できる」ということを意味します。

  • したがって、投票は過半数に基づいています。大多数は単に「半分以上」を意味するため、特定のサーバーがリーダーになるためには、サーバーの数の半分以上が同意する必要があります。

  • したがって、「スプリットブレイン」と呼ばれるこの悪いことがあります。私が理解している限り、スプリットブレインはこれです。5つのサーバーのクラスターが2つの部分に分割されるか、「サーバーチーム」と呼びましょう。これは、両方の「サーバーチーム」が特定の順序を実行する必要があるかのように、本当に悪い状況です。彼らはクライアントから異なる情報を受け取ったかもしれません。したがって、どの「サーバーチーム」が依然としてどのような関連性があり、どの人が無視できるかを知ることが本当に重要です。

  • 大多数は、奇数のサーバーを使用する必要がある理由でもあります。 4つのサーバーと2つのサーバーが分離されているスプリットブレーンがある場合、両方の「サーバーチーム」が「ねえ、私たちは誰がリーダーであるかを決めたいです!」と言うことができます。しかし、どの2つのサーバーを選択するかをどのように決定する必要がありますか? 5つのサーバーを使用すると、3つのサーバーを備えたサーバーチームの過半数があり、新しいリーダーを選択することができます。

  • たとえ3つのサーバーを持っていて、そのうちの1つが失敗したとしても、他の2つはまだ多数派を形成し、そのうちの1つが新しいリーダーになることに同意することができます。

しばらく考えて、それがそれほど複雑ではないという用語を理解したら、私は気づきます。これが誰もがこれらの用語を理解するのに役立つことを願っています。

Zookeeperは、構成情報を維持および管理するための集中型オープンソースサーバーであり、分散クラスター環境のためのコンベンションの命名と同期です。 Zookeeperは、分散システムが低レイテンシと高可用性を提供することにより、管理の複雑さを減らすのを支援します。 Zookeeperは当初、Hadoopのサブプロジェクトでしたが、今ではApache Software Foundationのトップレベルの独立プロジェクトです。

詳しくは

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top