zookeeper conceptual

Zookeeper 数据模型

Zookeeper 拥有着类似文件系统的命名空间,唯一的区别是在命名空间下的每一个节点都有数据和他关联

Znodes

zookeeper 的节点 znode, znode 维护着一些列状态信息 包含数据的版本,acl 权限修改信息,时间戳  服务器返回数据和客户端操作信息都是携带版本信息的 如果版本信息不一致的话那个将会失败(有点像乐观锁实现)

TIPS 这种处理行为可用户覆盖处理

znode 的几个特征

watches 

客户点可以对znode 添加监听器, 当触发的时候 服务器会给客户端一个通知

Data Access

数据存储在节点,数据特性是 原子特性的(不可再分割),每一个节点都有相应的ACL(Access Control List) 设定。zookeeper 节点存储的数据主要起协调各节点工作

Ephemeral Nodes(临时节点)

  1.  没有子节点
  2.  生命周期和会话一样

Sequence Nodes(序列节点)

  1. 命名唯一
  2. 创建节点的时候指定他的counter 

Time in zookeeper

zookeeper 有多种跟踪方式

Zxid(ZooKeeper Transaction Id)

每一个change 操作都携带着一个唯一的ZXID,如果changeA 的 zxid > changeB 的 zxid, 那么  那么changeB 将会优先发生(越小优先级越高)

Version Number(版本号)

每次change 都会修改版本号 3 个版本号

  1. number of changes to the data of a znode
  2. number of changes to the children of a znode
  3. number of changes to the ACL of a znode

Ticks

多服务器时,使用ticks 定义时间事件,载入状态,会话超时,节点之间connection 超时等

会话超时设定 2 倍的 心跳时间

Real time

zookeeper 时间 需要你自己放进来 不适用本机时间

zookeeper 的状态信息结构

每个节点的状态信息都是由以下数据字段组成的

  • czxid

    创建节点的Zxid

  • mzxid

    最后一次修改节点的Zxid

  • ctime

    节点创建时间(毫秒级别)

  • mtime

    节点最后修改时间(毫秒界别)

  • version

    节点数据版本信息

  • cversion

    子节点版本号信息

  • aversion

    acl 版本号信息

  • ephemeralOwner

    如果该节点是临时节点 这表示为会话ID 否则为 0

  • dataLength

    该节点的数据长度

  • numChildren

    该节点子节点的数量

zookeeper session

session 状态图

zookeeper conceptual_第1张图片


 资料列表

 http://coolxing.iteye.com/category/278800

你可能感兴趣的:(zookeeper)