zookeeper数据模型

ZooKeeper的最小数据单元ZNode,ZNode可以保存数据,也可以挂载子节点,依次构成一个层次化的结构,可以看作是树。

ZNode的节点路径由一系列使用斜杠(/)进行分割的路径表示,可以向节点中写入数据,也可以在节点下面创建子节点。

事务ID:在ZooKeeper中事务是指能够改变服务器状态的操作,也称为事务操作和更新操作,一般包括数据节点的创建与删除,数据节点内容更新和客户端会话

创建与失效操作。对于每一个事务请求,ZooKeeper都会为其分配一个全局唯一的事务ID,用ZXID来表示,通常为64位的数字,前32位(epoch)标记 leader信息,后32位

为当前leader下的事务替增序列号,ZXID可以间接的识别出ZooKeeper处理这些更新操作的全局顺序

一个epoch号对应一个leader,新的leader有新的epoch号


ZooKeeper的数据节点分为四种类型: PERSISTENT(持久性),PERSISTENT_SEQUENTIAL(持久顺序节点),EPHEMERAL(临时节点),

EPHEMERAL_SEQUENTIAL(临时顺序节点)

顺序节点在创建节点时候ZooKeeper会自动在节点名称后面加上一个数字后缀,做为一个新的完整的节点名字,上限为整型的最大值。

临时节点下面不能创建子节点


每个数据节点除了存储节点的数据内容外,还包含了节点的相关状态信息。


数据节点Stat对象的信息

czxid:ZNode创建节点时候的事务ID(ZXID)

mzxid:ZNode最后修改节点的事务ID(ZXID)

ctime:ZNode创建时间的绝对毫秒数

mtime:ZNode最后修改时间的绝对毫秒数

version:ZNode版本号(修改次数)

cversion:子节点修改次数

aversion:权限修改次数

ephemeralOwner:临时节点的拥有者session id,非临时节点为0

dataLength:Znode的数据长度

numChildren:子节点数

pzxid:表示该节点子节点列表最后一次修改时的事务ID,只有子节点列表修改才会更新,子节点数据内容变更不会更新


版本号:客户端对节点内容进行变更时候 会校验版本号,当前版本号与需要更新的版本号一致才进行更新,否则更新失败,如果客户端传入version为-1表示

按当前版本号更新


ZooKeeper Sessions

客户端通过创建一个handle和服务端建立session连接,一旦创建成功,handle就进入CONNECTING状态,客户端连接一台服务端,进入CONNECTED状态,当客户端断开 如session中止,鉴权失败或者应用直接结束handle,handle则进入CLOSED状态

你可能感兴趣的:(zookeeper数据模型)