您的位置:首页 > 其它

zookeeper之数据模型

2013-03-14 13:30 239 查看
以下参考:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/

Zookeeper数据模型

Zookeeper 会维护一个具有层次关系的数据结构,它非常类似于一个标准的文件系统,如下图所示:



Zookeeper 这种数据结构有如下这些特点:

每个子目录项如NameService都被称作为znode,这个znode是被它所在的路径唯一标识,如 Server1 这个znode的标识/NameService/Server1
znode 可以有子节点目录,并且每个 znode 可以存储数据,注意EPHEMERAL (临时)类型的目录节点不能有子节点目录
znode 是有版本的,每个 znode 中存储的数据可以有多个版本,也就是一个访问路径中可以存储多份数据
znode 可以是临时节点,一旦创建这个 znode 的客户端与服务器失去联系,这个 znode 也将自动删除。Zookeeper 的客户端和服务器通信采用长连接方式,每个客户端和服务器通过心跳来保持连接,这个连接状态称为 session,如果 znode 是临时节点,这个 session 失效,znode 也就删除了
znode 的目录名可以自动编号,如 App1 已经存在,再创建的话,将会自动命名为 App2
znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个是 Zookeeper 的核心特性,Zookeeper 的很多功能都是基于这个特性实现的。

Znode的状态结构
ZooKeeper中每个ZNode的状态数据结构都是由下列字段组成

czxid:导致此ZNode创建的zxid(ZooKeeper事务ID)
mzxid:最后一次修改此ZNode的zxid
ctime:从此ZNode创建到现在为止的时间毫秒数
mtime:从此ZNode上次修改到现在为止的时间毫秒数
version:此Znode的数据修改次数
cversion:此ZNode的子节点修改次数
aversion:此ZNode的ACL修改次数
ephemeralOwner:如果此ZNode是一个瞬时节点,此值表示此ZNode对应的会话ID。如果不是瞬时节点则为0
dataLength:此ZNode中数据的长度
mumChildren:此ZNode的子节点数量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: