ZooKeeper には、分散ファイル システムに似た階層名前空間があります。それらの唯一の違いは、名前空間内の各ノードがその子ノードとしてデータ関連付けを持つことができることです。これは、ファイルをファイルのディレクトリにすることができるファイル システムのようなものです。ノード パスは通常、正規のスラッシュで区切られた絶対パスとして表現されます。相対パスはありません。パスに含まれる Unicode 文字は、次の制約に従う必要があります。
1) Null 文字はパス名として使用できません。
2) 次の文字列は、表示が十分にわかりやすくなく、混乱を引き起こしやすいため、上位として使用できません。 u0001 - u001F および u007F - u009F)
3) 以下の文字列は使用できません。 (ud800 - uF8FF、uFFF0 - uFFFF)
4) 「.」文字は名前の一部として使用できますが、ZooKeeper はノードのパスを表すために単独で存在することはできません。相対パスを使用します。次の例は無効な "/a/b/./c" または "/a/b/../c" です
5) "zookeeper" キーワードは予約されています
ZooKeeper ツリー構造内の ZNodes
のノードは znode と呼ばれます。 Znode は、データ変更バージョン番号、ACL 変更、およびタイムスタンプを含むステータス データ構造を維持します。バージョン番号とタイムスタンプにより、ZooKeeper はキャッシュの置換と更新の調整を実行できるようになります。 znode のデータが変更されるたびに、バージョン番号が増加します。たとえば、クライアントはデータを受信するたびに、このデータのバージョンも受信します。同時に、クライアントが更新または削除操作を実行するときは、変更される znode ノードのデータ バージョンを提供する必要があります。 znode によって提供されるバージョン番号が現在のデータの実際のバージョン番号と一致しない場合、更新は失敗します。
注:
分散アプリケーションプロジェクトでは、単語ノードは単一のホスト、サーバー、全体のメンバー、クライアントプロセッサなどと考えることができます。 ZooKeeper のドキュメントでは、znode はデータ ノードとみなされます。サーバーは、ZooKeeper サービスを構成するホストとみなされます。クォーラム ピアは全体を形成するサーバーとみなされ、クライアントは ZooKeeper サービスを使用するホストまたはプロセスとみなされます。
Znode はプログラマがアクセスする主要なエンティティです。これらには、知っておく価値のある多くの機能があります:
ウォッチ (リスナー)
クライアントは znodes でリッスンできます。 znode を変更すると、このリスナーがトリガーされ、その後クリアされます。リスナーがトリガーされると、ZooKeeper はクライアントに通知を送信します。
データアクセス
ネームスペースのznodeに保存されたデータは、アトミックに読み書きされます。読み取り操作は znode に関連付けられたすべてのデータ バイトを読み取り、書き込み操作はすべてのデータを置き換えます。各ノードには、誰が何を実行できるかを制限するアクセス制御リスト (ACL) データ アクセス リストがあります。
ZooKeeper はデータベースやラージ オブジェクト ストレージとして使用するように設計されていません。代わりに、データの管理と調整に使用されます。データのソース形式には、構成情報、ステータス情報、地域情報などが考えられます。さまざまな形式の調整データに共通する特性は、データが KB バイトの範囲で比較的小さいことです。 ZooKeeper クライアントとサーバーの両方には、znode が 1M 未満のデータであることを確認する健全性チェックがありますが、データはこの平均よりもはるかに小さい可能性があります。比較的大きなデータを操作すると、ネットワークまたはストレージ メディアを介したデータの移行が必要になるため、操作に時間がかかり、他の操作の遅延に影響します。ビッグ データのストレージが必要な場合、このデータを処理する通常の方法は、NFS や HDFS などの大規模ストレージ システムにデータを保存し、ZooKeeper にデータ ストレージの場所へのポインタを保存することです。
ZooKeeper には一時ノードの概念があります。ノードを作成したセッションがアクティブである限り、これらのノードは引き続き存在し、セッションが終了すると、これらのノードも削除されます。この動作のため、一時ノードは子ノードを持つことができません。
ノードを作成するとき、パスの最後に単調増加するカウンターを追加するように ZooKeeper に依頼できます。このカウンタは、この親ノードに固有です。カウンタの形式は %010d (10 進数にゼロが埋め込まれます) で、単純な並べ替え用に形式化されています。たとえば、「0000000001」などです。この機能の使用例については、「キュー レシピ」を参照してください。注: 次のシーケンス番号を格納するために使用されるカウンターは、親ノードによって維持される signed int です。このカウンタは、2147483647 を超えるとオーバーフローします (結果は "
以上がZooKeeper データモデルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。