上篇相关博文:Zookeeper入门及单机及集群环境搭建
1.标题Zookeeper节点
1.1 节点类型
zookeeper节点默认大小是1M。
-
PERSISTENT 持久化节点: 所谓持久节点,是指在节点创建后,就一直存在,直到 有删除操作来主动清除这个节点。否则不会因为创建该节点的客户端会话失效而消失。
-
PERSISTENT_SEQUENTIAL 持久顺序节点:这类节点的基本特性和上面的节点类 型是一致的。额外的特性是,在 ZK 中,每个父节点会为他的第一级子节点维护一份时序, 会记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时候,可以设置这个属 性,那么在创建节点过程中,ZK 会自动为给定节点名加上一个数字后缀,作为新的节点名。 这个数字后缀的范围是整型的最大值。 在创建节点的时候只需要传入节点 “/test_”,这样 之后,zookeeper 自动会给”test_”后面补充数字。
-
EPHEMERAL 临时节点:和持久节点不同的是,临时节点的生命周期和客户端会 话绑定。也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提 到的是会话失效,而非连接断开。另外,在临时节点下面不能创建子节点。 这里还要注意一件事,就是当你客户端会话失效后,所产生的节点也不是一下子就消失 了,也要过一段时间,大概是 10 秒以内,可以试一下,本机操作生成节点,在服务器端用 命令来查看当前的节点数目,你会发现客户端已经 stop,但是产生的节点还在。
-
EPHEMERAL_SEQUENTIAL 临时自动编号节点:此节点是属于临时节点,不过带 有顺序,客户端会话结束节点就消失。
1.2 ZooKeeper的stat结构
ZooKeeper命名空间中的每个znode都有一个与之关联的stat结构,类似于Unix/Linux文件系统中文件的stat结构。 znode的stat结构中的字段显示如下,各自的含义如下(官方文档:http://zookeeper.apache.org/doc/current/zookeeperProgrammers.html#sc_zkStatStructure):
cZxid:创建znode的事务ID。
mZxid:最后修改znode的事务ID。
pZxid:用于添加或删除子节点的znode的事务ID。
ctime:表示从1970-01-01T00:00:00Z开始以毫秒为单位的znode创建时间。
mtime:表示从1970-01-01T00:00:00Z开始以毫秒为单位的znode最近修改时间。
dataVersion:表示对该znode的数据的更改次数。
cversion:表示对此znode的子节点的更改次数。
aclVersion:表示对此znode的ACL更改的次数。
ephemeralOwner:如果znode是ephemeral(临时)类型节点,则这是znode所有者的 session ID。 如果znode不是ephemeral节点,则该字段设置为零。
dataLength:znode数据字段的长度。
numChildren:表示znode的子节点的数量。
在ZooKeeper Java shell中,可以使用stat
或ls2
命令查看znode的stat结构。
如:stat /zk 或者 ls2 /zk
注: zxid,也就是事务id, 为了保证事务的顺序一致性&#