zookeeper之数据模型

以下参考:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/


Zookeeper数据模型


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



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

  1. 每个子目录项如NameService都被称作为znode,这个znode是被它所在的路径唯一标识,如 Server1 这个znode的标识/NameService/Server1
  2. znode 可以有子节点目录,并且每个 znode 可以存储数据,注意EPHEMERAL (临时)类型的目录节点不能有子节点目录
  3. znode 是有版本的,每个 znode 中存储的数据可以有多个版本,也就是一个访问路径中可以存储多份数据
  4. znode 可以是临时节点,一旦创建这个 znode 的客户端与服务器失去联系,这个 znode 也将自动删除。Zookeeper 的客户端和服务器通信采用长连接方式,每个客户端和服务器通过心跳来保持连接,这个连接状态称为 session,如果 znode 是临时节点,这个 session 失效,znode 也就删除了
  5. znode 的目录名可以自动编号,如 App1 已经存在,再创建的话,将会自动命名为 App2 
  6. 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的子节点数量
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值