ZooKeeper主要分为三大模块:数据模型,ACL权限,Watch监控机制。发布订阅功能主要是利用数据模型中的临时节点和Watch监控机制实现的。ZooKeeper常用于实现分布式锁以及当担分布式协调器。
数据模型
ZooKeeper的数据模型是以节点类似树的形式进行保存的(如下图所示)。节点类型分为永久节点,永久顺序编号节点(永久节点一旦创建将一直保存,除非显示调用delete函数进行删除),临时节点,临时顺序编号节点(临时节点客户端会话断开,便会删除)。
节点的状态结构
zk的节点状态使用命令:stat path 可查看;
各个状态的属性说明如下面表格,zookeeper每个数据节点之间都有版本号,在每次修改数据的时候对应的版本号也会增加。版本号越大也说明当前节点数据越新。
常用命令以及zkCli的使用
使用bin目录下的zkCli.cmd连接本地或者远程连接已经启动的zookeeper,在windows下是.cmd文件,在linux是.sh文件。
1 远程连接: .\zkCli.cmd -timeout 5000 -r -server ip:2181 (不带参数,则默认连接localhost:2181)
2 创建节点:create [-s] [-e] [-c] [-t ttl] path [data] [acl]
-s 顺序创建 -e 临时节点 path 创建的路径 data 存放的数据 ack 设置权限
3 获取节点下的子节点: ls path 例如 ls /
4 获取节点数据: get path 例如 get /kan
5 修改节点中数据: set [-s] [-v version] path data
6 删除某节点,如果当前节点存在子节点则不允许删除:delete [-v version] path
7 删除当前节点及其子节点 : rmr path 递归删除
8 删除所有节点: delete all path