https://www.jianshu.com/p/cbe5f0dd6cca
一、概念详解
zxid
Zookeeper中每个状态变化都会产生一个全局唯一的zxid (ZooKeeper Transaction Id),通过它可确定更新操作的先后顺序,每个更改都将有一个唯一的 zxid。例如,zxid1小于zxid2,则说明zxid1操作先执行,zxid2后执行; zxid对于整个Zookeeper都是唯一的,即使操作的是不同的znode。
Version numbers
zookeeper中又三种version,cversion、dataVersion、aclVersion ;每次znode状态更改都会导致其中一个版本值增加。当前节点的子节点每次变化时cversion值增加1;当前节点的数据每次变化时dataVersion值增加1;当前节点的acl权限每次变化时aclVersion 值增加1
Ticks
tickTime:一次心跳的基本时间;是ZK使用的基本时间单位,这个参数用于配置一个tick的长度,单位为毫秒,默认配置文件设定的是2000;被用作心跳(heartbeats )测试时间间隔和session的超时设置,最小的session超时时间是tickTime的两倍。
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
二、默认znode
zookeeper 服务器中有两个默认的znode,详情如下:
[zk: localhost:2181(CONNECTED) 2] ls -R /zookeeper
/zookeeper
/zookeeper/config
/zookeeper/quota
[zk: localhost:2181(CONNECTED) 3]
三、结构字段详解
一个znode展示的结构字段如下
cZxid = 0x184
ctime = Tue Mar 26 15:44:15 CST 2024
mZxid = 0x193
mtime = Tue Mar 26 18:30:18 CST 2024
pZxid = 0x18b
cversion = 4
dataVersion = 5
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 4
结构字段 | 描述 |
---|---|
cZxid | create zxid 即该数据节点被创建时的事务id |
ctime | create time ,即该节点的创建时间 |
mZxid | modified ZXID,即该节点最终一次更新时的事务id |
mtime | modified time,即该节点最后一次的更新时间 |
pZxid | 该节点的子节点列表最后一次修改时的事务id,只有子节点列表变更才会更新pZxid,子节点内容变更不会更新 |
cversion | 子节点更改的次数,当前节点的子节点每次变化时值增加1 |
dataVersion | 数据节点内容版本号,节点创建时为0,每更新一次节点内容(不管内容有无变化)该版本号的值增加1 |
aclVersion | 节点的ACL版本号,表示该节点ACL变更次数 |
ephemeralOwner | 创建该临时节点的会话的sessionId;如果当前节点为持久节点,则ephemeralOwner=0 |
dataLength | 当前节点数据长度 |
numChildren | 当前节点的子节点数量 |