zookeeper系列学习(三)
zookeeper的数据结构和watches机制
数据结构决定了数据如何存储,watches机制是它的一个功能 组成了zookeeper。
1.数据结构
zookeeper中数据保存在一个个数据节点上,这些节点成为znode,是zookeeper最小单位,可以在znode节点下面在挂znode节点。这样就形成了层级树形结构。可以在节点上存数据,也可以创建节点。

节点的分类:
持久性节点
指节点一直存在服务器上,知道删除才会清楚。
临时性节点
只要创建的会话存在znode就存在,会话结束时,将删除znode.临时节点不能创建节点
顺序节点
可以可上面两个进行组合。 会在创建的名字后面加上一个数字后缀表示顺序。
事务id
在zookeeper中,事务值得是服务器状态的变化,称为事务操作或者更新操作。一般包括创建、删除、更新操作。对每一个事务请求,zookeeper都会为其分配一个全局的事务id,生成编号,这个编号是自增长得被称为zxid。
ZNode 的状态信息
[zk: localhost:2181(CONNECTED) 0] get /zookeeper
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1
[zk: localhost:2181(CONNECTED) 1]
整个 ZNode 节点内容包括两部分:节点数据内容和节点状态信息。数据内容是空,其他的属于状态信息。那么这些状态信息都有什么含义呢?
cZxid 就是 Create ZXID,表示节点被创建时的事务ID。
ctime 就是 Create Time,表示节点创建时间。
mZxid 就是 Modified ZXID,表示节点最后⼀次被修改时的事务ID。
mtime 就是 Modified Time,表示节点最后⼀次被修改的时间。
pZxid 表示该节点的⼦节点列表最后⼀次被修改时的事务 ID。只有⼦节点列表变更才会更新 pZxid,
⼦节点内容变更不会更新。
cversion 表示⼦节点的版本号。
dataVersion 表示内容版本号。
aclVersion 标识acl版本
ephemeralOwner 表示创建该临时节点时的会话 sessionID,如果是持久性节点那么值为 0
dataLength 表示数据⻓度。
numChildren 表示直系⼦节点数。
2.watcher机制
zookeeper 支持Watcher吉致。 客户端可以在znode设置watcher。在znode改变是,将触监视,客户端会受到一个数据包,说znode已更改。如果客户端和其中一个zookeeper服务器之间的连接断开,则客户端将受到本地通知。
Zookeeper的Watcher机制主要包括客户端线程、客户端WatcherManager、Zookeeper服务器三部分。
关注微信公众号: 程序员子期 获取更多技能

浙公网安备 33010602011771号