はじめに1.飼育係さん
ファイルシステムと通知機構によって構成飼育係
1)ファイルシステム
飼育係は、ツリー構造を使用してデータを管理します。そして、ツリー構造のルートノードとして「/」。各ツリーノードは「のznode」です。ファイルシステム内のディレクトリは、他のディレクトリおよびファイルに格納することができる他のznode用のznodeに格納することができ、それはまた、特定の値、値の対のznodeとそれに対応する値との間の関係に対応してもよいです。
ツリー構造
znodeで構成①ツリー構造体
②各ノードは、次の2つの部分を含みます
I.値:パスのノードと「キーと値のペア(キー値)」の現在の値を構成するストレージノードの関係
II。国家のstat
2)通知メカニズム
より多くのビジネス機能などの分散プロジェクトでは、特定の機能モジュールは、より多くなり、主要な電力供給プロジェクトは、数十あるいはそれ以上のモジュールに到達することができます。だから、マルチモジュールプロジェクトを手動で変更はなく、関連するすべてのモジュール一つ一つのプロジェクトは非常に面倒になり、変更、およびさえ抜けが発生することが情報の一部を共有する必要があるかもしれません。
通知機構のZooKeeperを使用した後、各モジュールが現在のノードの値の変化を監視するために、特定のプロジェクトのznodeウォッチャー(オブザーバ)に設けられている」ように、ウォッチャーの検出直後に、データモジュールの変更に気づくであろう変形どこでも、発効効果」。
①目的:どこでもアップデートを変更するには
②メカニズム:Observerパターン
2. zoo_sample.cfgファイルの解析
ファイルconfの飼育係解凍パケット(例:/opt/zookeeper-3.4.9/conf)
各パラメータのファイルの説明:
。1)tickTimeの ミリ秒単位で心拍通信、サーバーのZooKeeper心拍時間、。
飼育係の基本的な時間の使用、クライアントとサーバ、またはサーバ間のハートビート間隔の期間、つまり、毎回tickTimeがハートビートを送信します。
ハートビート機構が使用され、(最小タイムアウト時間セッションが最小セッションタイムアウトが倍ハートビート時間で設定されている2 * tickTime)。
2)initLimit LF 初期通信時間を
クラスタフォロワーのフォロワーサーバ(F)とリーダーの番号(tickTimeの数)リーダー(L)との間に、サーバの初期接続は、最大ハートビートに耐えることができたときに
起動時の初期化時間フォロワーの新しいリーダーを選出する投票、我々はその後、外部サービスの初期状態を決定することができ、リーダーからのすべての最新のデータを同期します。
リーダーフォロワーはinitLimit時間内にこの作業を完了することができました。
3)syncLimit LF 同期通信時間を
リーダーとFollwerユニット間のクラスタの最大応答時間、応答がsyncLimit * tickTime、リーダーが死んだと考えているFollwer超えた場合は、サーバフォロワーのリストから削除
動作中に、すべてのマシンのZooKeeperクラスタとの通信を担当するリーダーは、例えば、ハートビート機構の数を介して機械の状態の生存を検出します。
LパッケージsyncLimit場合は、ハートビートを発行した後、あまりにも長い間、もはやFラインアップと思い、そのFからの応答を受信していないしていません。
。4)DATADIRの データファイルのディレクトリパスデータの永続性+
特に明記していない場合は、インメモリデータベースのスナップショット情報を保存し、更新トランザクションログは、データベースに保存されます。
。5)CLIENTPORTの クライアントポート
3. ZooKeeperの一般的に使用されるコマンド
サービスに関連するコマンドの1)終了(binディレクトリ飼育係のインストールディレクトリにあります)
開始:./zkServer.shスタート
停止:./zkServer.sh STOPを
ビューのステータス:./zkServer.shステータス
2)クライアント関連のコマンド
入力:./zkClient.sh
終了:終了
3)クライアント・ノードに関連する操作
① LS / LS2
② [-S] [-e]データ経路作成作成したノードとノードの値に対応します
[-S]:配列を含みます
[-E]:一時的(または再起動タイムアウトが消えます)
[パス]:パスノード
[データ]:ノードの上限値
例:作成/テストABC
③ 削除とRMR
唯一の空のノードを削除することができ、[削除]
[RMR]再帰的に子を削除することができたときに、現在のノード削除されます
④ STATパスビューのステータス
4)ノード操作コマンド
① SETデータパス:設定値
例:set /test aaa
②get path data:获取值
例:get /test
注:若敲错了命令,则会给出所有的命令操作提示信息
5)关于状态stat信息的详细说明:
简介:znode维护了一个stat结构,这个stat包含数据变化的版本号、访问控制列表变化、还有时间戳。版本号和时间戳一起,可让ZooKeeper验证缓存和协调更新。每次znode的数据发生了变化,版本号就增加。
参数说明:
czxid:引起这个znode创建的zxid,创建节点的事务的zxid(ZooKeeper Transaction Id)
ctime:znode被创建的毫秒数(从1970年开始)
mzxid:znode最后更新的zxid
mtime:znode最后修改的毫秒数(从1970年开始)
pZxid:znode最后更新的子节点zxid
cversion:znode子节点变化号,znode子节点修改次数
dataversion:znode数据变化号
aclVersion:znode访问控制列表的变化号
ephemeralOwner:如果是临时节点,这个是znode拥有者的session id。如果不是临时节点则是0。
dataLength:znode的数据长度
numChildren:znode子节点数量
6)四字命令
ZooKeeper支持某些特定的四字命令,他们大多是用来查询ZooKeeper服务的当前状态及相关信息的,使用时通过telnet或nc向ZooKeeper提交相应命令。例:echo ruok | nc localhost 2181
①nc命令需要安装对应的程序才可以使用。
yum install -y nc
②常用四字命令
ruok:测试服务是否处于正确状态。如果确实如此,那么服务返回“imok ”,否则不做任何相应
stat:输出关于性能和连接的客户端的列表
conf:输出相关服务配置的详细信息
cons:列出所有连接到服务器的客户端的完全的连接 /会话的详细信息。包括“接受 / 发送”的包数量、会话id 、操作延迟、最后的操作执行等等信息
dump:列出未经处理的会话和临时节点
envi:输出关于服务环境的详细信息(区别于conf命令)
reqs:列出未经处理的请求
wchs:列出服务器watch的详细信息
wchc:通过session列出服务器watch的详细信息,它的输出是一个与watch相关的会话的列表
wchp:通过路径列出服务器 watch的详细信息。它输出一个与 session相关的路径