Zookeeper内部维护了一套数据结构,这个结构是一个树形的结构,有一个根节点 /,根节点下面是一个个的子节点,每个子节点称为ZNode,每个ZNode都可以通过其路径唯一标识。比如ZNode节点changes的唯一标识就用它的路径标识:/config/changes。
ZNode节点的分类
ZNode节点可以分为四类,分别是持久化目录节点、持久化顺序编号目录节点、临时目录节点、临时顺序编号目录节点。
- 持久化目录节点
客户端与Zookeeper断开连接后,该节点依旧存在,不会被删除,除非执行强制性删除。
- 持久化顺序编号目录节点
Zookeeper会根据父节点ZNode的zxid状态,给该子节点按顺序编号。客户端与Zookeeper断开连接后,该节点依旧存在。
- 临时目录节点
客户端与Zookeeper断开连接后,该节点就会被删除。
- 临时顺序编号目录节点
Zookeeper会根据父节点ZNode的zxid状态,给该子节点按顺序编号。客户端与Zookeeper断开连接后,该节点就会被删除。
进入Zookeeper客户端命令行
接下来我们要通过操作如何进入客户端命令行,去深入学习了解Zookeeper的目录结构。
首先,我们进入操作Zookeeper的脚本目录,它在zookeeper安装目录的bin目录下。如图,是所有的执行脚本文件。
然后查看当前Zookeeper的状态,执行如下命令:
zkServer.sh start
状态是未启动,就启动当前Zookeeper服务,执行如下命令:
zkServer.sh start
最后就可以进入Zookeeper客户端命令行,执行如下命令:
zkCli.sh
ZNode节点的状态信息
进入客户端命令行之后,执行如下命令,就可以查看当前ZNode节点的状态信息:
[zk: localhost:2181(CONNECTED) 1] ls2 /
每一个状态信息,分析如下:
cZxid = 0x0,表示该节点被创建时的Zxid,即create Zxid。
ctime = Thu Jan 01 08:00:00 CST 1970,表示该节点被创建的时间。
mZxid = 0x0,表示该节点最后一次被修改时的Zxid,即modified Zxid。
mtime = Thu Jan 01 08:00:00 CST 1970,表示该节点最后被修改的时间。
pZxid = 0x5100000173,表示该节点下的任何一个子节点最后一次被修改时的Zxid。
cversion = 54,表示该节点下的子节点被修改的次数。
dataVersion = 0,表示该节点的内容版本号。
ephemeralOwner = 0x0,表示临时节点的所属会话id。不是临时节点,该值为0.
dataLength = 0,表示该节点的数据长度。
numChildren = 12,表示该节点有多少个子节点数量。
作者:杨工,北京互联网公司在职Java开发,专注分享写作干货。