一、数据结构
zookeeper是一个由 znode节点组成的一个树形结构,每个节点可包含数据和子节点,并且客户端可以监控每一个节点(即设置监视器)。
二、znode的类型(短暂型和持久型)
创建znode时设置顺序标识,znode名称后会附加一个值,顺序号是一个单调递增的计数器,由父节点维护。
1. 持久性的znode(一旦创建就不会丢失)
create /aaa helloworld
2. 顺序性的znode(创建一个znode,系统会将你的znode上面追加一个10位数编号)
命令 -s 创建顺序性znode,
create /aaa
create -s /aaa/b1 hello1
create -s /aaa/b2 hello2
ls /aaa
3. 临时性的znode(zookeeper宕机了,或者client在session指定的时间内没有连接server,都会被认为丢失)
client -> server 【tcp长连接 + session机制】
如果server认为client死机,或者重启一下zookeeper,会将client以前创建的znode删除
命令 -e 创建临时znode
create -e /aaa/b3 hello3
4. 创建临时 +
顺序 节点
create -s -e /aaa/b4 hello4
三、znode的属性(get /aaa )
每个ZNode节点在存储数据的同时,都会维护一个叫做Stat的数据结构,里面存储了关于该节点的全部状态信息。
czxid 数据节点创建时的事务ID
ctime 数据节点创建时的时间
mzxid 数据节点最后一次更新时的事务ID
mtime 数据节点最后一次更新时的时间
pzxid 数据节点的
子节点最后一次被修改时的事务ID
cversion 子节点的更改次数
version 节点数据的更改次数
aversion 节点的ACL的更改次数
ephemeralOwner 如果节点是临时节点,则表示创建该节点的会话的SessionID;如果节点是持久节点,则该属性值为0
dataLength 数据内容的长度
numChildren 数据节点当前的子节点个数