飼育係はをどうするかは何ですか

まず、飼育係は何ですか

  ZooKeeperのは、分散アプリケーションのための分散、オープンソースの連携サービスであるGoogleのチャビーのオープンソース実装で、HadoopのとHBaseのの重要な要素です。それは、分散アプリケーションのための一貫したサービスを提供することで機能が含ま提供:コンフィギュレーション・メンテナンス、ドメイン・ネーム・サービス、分散型の同期、グループ・サービスを。

  簡単に言えば、飼育係= +モニター・ファイル・システムの通知メカニズム

 

第二に、ファイルシステム

  飼育係は、ファイルがファイルである、Linuxのディレクトリはディレクトリで、差がある、Linuxのファイルシステムと類似しています。飼育係一つだけのznodeのコンセプト自体は、特定のデータを格納するための「ファイル」のように、だけでなく、「ディレクトリ」が存在としての役割を果たすことができます。

/ * 
   + --- + 
   | / | 
   + - + - + 
     | 
     | + ------ + 
     + - |設定| 
     | + - + --- + 
     | | + ----- + 
     | + ----- | IP | 
     | | + ----- + 
     | | + ----- + 
     | + ----- |ポート| 
     | + ----- + 
     | 
     | + ------ + 
     + - |アプリケーション| 
        + - + --- + 
           | + ----- + 
           + ----- | APP1 | 
           | + ----- + 
           | + ----- + 
           + ----- | APP2 | 
                 + ----- + 
* /

  znodeは、4つのカテゴリに分類します:

  1、PERSISTENT-永続ディレクトリノード

    飼育係からのクライアントの切断後のこのノードには、まだ削除するためのイニシアチブを取る必要があります。

  2、PERSISTENT_SEQUENTIAL-永続的なディレクトリノードのシーケンス番号

    同様に、このようなノードはまた、削除するためのイニシアチブを取る必要があり、それが切断され、除去クライアントで終了しません。違いは、永続的で、飼育係そのようなノードは番号付けされることです。以下のような:数が自動的に増加する飼育係のためapp0000003362.0000003362。

  3、ephemeral-が一時ディレクトリノード

    PERSISTENT違いは、これらのノードは、飼育係からのクライアントの切断後に削除されるということです。

  順次番号4、EPHEMERAL_SEQUENTIAL-一時ディレクトリノード

    そしてPERSISTENT_SEQUENTIAL同様の番号が自動飼育係を持っている、違いはクライアントの後に削除され、飼育係が切断しました。

 

  これは、同じパスの下で、同じ名前のznodeは一度だけ作成することができ、ことは注目に値します。そして、それぞれのznodeは、1Mのデータの最大値を格納することができます。

第三に、通知メカニズムを聞きます

  クライアントはいつノードディレクトリの変更、監視ディレクトリノードへの関心を登録する(変更データが削除され、サブディレクトリノード増加を削除する)、飼育係がクライアントに通知します。

 

第四に、実用的なアプリケーション

  ファイルシステムとモニターの通知メカニズムに基づいて、飼育係は、多くのアプリケーションシナリオを持っています。

  1.ネームサービス(ファイルシステムに基づきます)

    重要な役割を果たしているすべてのコンピュータシステムの名前で、それらは、エンティティを一意に識別するために、ポイントの場所をリソースを共有するために使用されています。名前付きオブジェクトには、多くの種類を持つことができ、異なるサービスの数にアクセスするために使用することができます。ネームサーバが見つけ与えられたリソースまたはオブジェクト名のアドレスでとプロパティについての情報を得ることができます。(Baiduの百科事典)

    単に名前で対応するリソース/サービスのアドレスを取得するために、置きます。znodeの唯一の使用は、対応する情報がのznodeに記録されて、グローバルノードを作成することができます。私たちは、このノードに情報を取得するために直接対応するリソース・サービスを使用する必要があります。

  2、構成管理(ファイルシステムとモニタの通知メカニズムに基づきます)

    サービスはなく、マルチサービス展開で、独自の構成を有しています。プロファイルの形状は、一度設定を変更する場合は、必要がマシンにすべてのファイルを同期して、ダイナミック・ロード、または単にリブートの範囲を通知します。この場合、全体のバックステージの共有設定(ルーティング情報、等)があるが、サービスに同期させるように改変のみを必要とする(拡張など、下流ノードを増やします)。(彼らが使用している部署の日付までではあるが)長い時間の後に、別の構成異なるサービス条件が存在します。この時点で、センターを構成することによって、この問題を解決することができ、すべての構成は、構成の中心部、統一された管理から読み込まれます。

    自分の物流センターを達成するために、すべての後に、それは価格で来ます。使用の飼育係、中心の完全に機能的な構成を達成することができます。対応のznodeに格納されている情報を、対応するサービスは、自分自身の懸念(のznode)を設定するために耳を傾ける必要があります。znodeが変更されると、すべてのリスナーは、そのような構成を更新するために、(彼のクライアントのサービスは、飼育係のために)こののznodeウォッチャークライアントを使用して通知します。

  (ファイルシステムとモニター通知メカニズムに基づいて)3、クラスタ管理

    参加するには、マシンと終了、マスター選挙:サービスがクラスタにデプロイされると、二つの問題があるでしょう。あなたは、サービスを知っている必要があり、このクラスタAに聞くために、このサービスのクラスタのすべてがAで、一時的なのznodeのBを作成してみましょう、永続的なのznodeのAで飼育係を作成することができます 古いマシン(ダウンタイム、体積の減少など)を残し、新たにBを作成し、新しいマシンを追加すると、自動的にBを削除 かどうかは、作成、または削除、Aは、すべてのリスナーに通知しウォッチャーの使用を変更しました。我々はすべて、このクラスタ内の状況ということを知っているので。

    Cノードに一時ディレクトリを作成するには、マスターの選挙のために、同じことがまた、飼育係の持続的なのznodeのCを作成することができ、その後、すべてのサービスのための連番。たびにマスターとしていかなる最大または最小を選択していません。数暫定オーダーカタログ・ノード番号をインクリメントするように新しいマシンが追加された最大のマスタとして選択した場合、新しいマシンがマスターとなります。そして、それは(のznodeは削除されません)に終了しない限り、マスタとしての最低限の番号を選択し、あなたが状況のスイッチマスターする必要はありません、データが最も安全です。

  (ファイルシステムとモニター通知メカニズムに基づいて)4、分散ロック

    プログラムがあり、二つのスレッド、同じ変数に100ワット回++の操作を実施しているがあります。ロックされ、その結果が200ワットではありませんされるものではありません。あなたが同時に同じリソースを変更する場合は同様に、クラスタ内で、状況がお互いをカバーするように思われます。この時点で、このような問題に対処するための分散ロックを使用する必要があります。開始する前に、このリソースを変更するには、最初のロックを取得。あなたは成功するために操作した後に変更することができます。飼育係、のznodeの一意性のために、あなたは、分散ロック・サービスを実装するためにそれを使用することができます。、ロックを取得する必要が解放するときに、指定されたパス内のznode(非自動番号)を作成し、これのznodeを除去する際に必要。作成が失敗した場合、現在はロックをつかむために持っている他のサービス。

    znodeの非自動ナンバリングが作成した場合は、問題があるでしょう。クラスタロックがすべて同じサービスを競合するたびに、他のサービスが成功ではありませんが、状況を数回をつかむためにサービスがあるでしょう。この場合、自動番号と親のznodeスヌープをのznodeように修正することができます。あなたは自動的にロックする必要があるたびに、番号のznodeを作成します。あなたはすべてのznodeでのznode最小の数を作成した場合、私は彼らがロックをつかむと思います。ロック解除(削除のznode)した後、クラスタ全体に通知します。これは規則的な方法で、分散ロックを達成し、皆のためではないだろう。

    

 

第五に、参照リンク

  https://blog.csdn.net/u010963948/article/details/83381757

  https://www.cnblogs.com/lfs2640666960/p/11104838.html

  https://blog.csdn.net/java_66666/article/details/81015302

  https://blog.csdn.net/chunqiu3351/article/details/100762270

  https://www.jianshu.com/p/d4fb16fafc2e

 

おすすめ

転載: www.cnblogs.com/chinxi/p/12640059.html