ZooKeeper数据结构

Time in ZooKeeper

ZooKeeper跟踪时间的多种方式

1)Zxid:每个ZooKeeper状态变化将会接收到一个zxid(ZooKeeper Transaction Id)的时间戳。ZooKeeper通过该字段了解所有变化的顺序。每次变化都会有一个唯一的zxid,如果zxid1小于zxid2,说明zxid1发生在zxid2之前。

2)Version numbers:每个对节点的变化都会对这个节点的版本号加1.有3个版本号他们分别是version\cversion\aversion

3)Ticks:当在使用多机ZooKeeper服务时,服务器之间会使用ticks票据来定义事件(比如状态上传、会话超时、连接超时等等)的计时。tick时间会通过最小会话超时时间间接显示;如果客户端请求会话超时小于最小的会话时间,服务端会告诉客户端这个会话超时时间实际是最小会话时间;

4)Real time:ZooKeeper没有使用实时时间或者时钟时间,除了把时间戳放进正在创建或者修改的znode节点的数据结构中。

在ZooKeeper的每个znode节点的数据结构由以下几个字段组成:

1)czxid-znode节点创建时间所对应的zxid

2)mzxid-znode节点修改时间所对应的zxid

3)ctime-znode节点创建时从epoch过来的时间戳

4)mtime-znode节点修改时从epoch过来的时间戳

5)version-znode节点的版本号

6)cversion-znode子节点的版本号

7)aversion-znode节点的权限(ACL)版本号

8)ephemeralOwner-如果znode节点是临时节点,表示所属会话的id,如果不是临时节点则为0

9)dataLength-znode节点数据字段的长度

10)numChildren-znode节点的子节点数量

posted @ 2017-06-15 15:42  wang_tale  阅读(2083)  评论(0编辑  收藏  举报