定义
Zookeeper的视图结构和标准的Unix文件系统类似,其中每个节点称为数据节点或Znode,每个znode可以存储数据,还可以挂载子节点,因此可以称之为“树”。
特性
1、在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据
2、通过客户端可对znode进行增删改查的操作,还可以注册watcher监控znode的变化。
节点类型
1、持久节点(PERSISTENT)
客户端与服务端端口连接后,该节点依然存在,除非快照文件被删除。
下图中,创建了持久化节点water。
2、持久化顺序节点(PERSISTENT_SEQUENTIAL)
客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号。
在下图中,创建了water的持久顺序节点,Zookeeper自动给节点添加了序列号,最后节点为water0000000006。
同时我们看属性ephemeralOwner是空值,表明该节点为持久化节点。
3、临时节点(EPHEMERAL)
客户端与zookeeper断开连接后,该节点被删除。
在下图中,在持久化节点water下创建临时节点aaa。我们发现ephemeralOwner属性不为空值,表明该节点为临时节点。
4、临时顺序节点(EPHEMERAL_SEQUENTIAL)
客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号。
下图中,创建临时节点bbb,系统自动带上了学列号。
注意:临时下不能再创建子节点
在下图中,我们尝试在临时节点/water/aaa下创建节点ccc,系统提示不允许在临时节点下创建节点。
节点属性
序号 |
属性 |
数据结构 |
描述 |
1 |
czxid |
long |
节点被创建的Zxid值 |
2 |
mzxid |
long |
节点被修改的Zxid值 |
3 |
pzxid |
long |
子节点最有一次被修改时的事务ID |
4 |
ctime |
long |
节点被创建的时间 |
5 |
mtime |
long |
节点最后一次被修改的时间 |
6 |
versoin |
long |
节点被修改的版本号, |
7 |
cversion |
long |
节点的所拥有子节点被修改的版本号 |
8 |
aversion |
long |
节点的ACL被修改的版本号 |
9 |
emphemeralOwner |
long |
如果此节点为临时节点,那么它的值为这个节点拥有者的会话ID;否则,它的值为0 |
10 |
dataLength |
int |
节点数据域的长度 |
11 |
numChildren |
int |
节点拥有的子节点个数 |