ZooKeeper数据模型Znode

Znode

在Zookeeper中,数据信息被保存在一个个数据节点上,这些节点被称为Znode.Znode是Zookeeper中的最小的数据单位,在Znode下面又可以再挂Znode,这样一层一层下去就形成了层次化,命名空间Znode树,称为Znode Treee,它采用类似文件系统的层级树状结构.
ZooKeeper数据模型Znode_第1张图片

Znode 类型

持久节点,持久顺序节点,临时节点,临时顺序节点.

持久性节点 (Persistent)

指点被创建后就会一直存在服务器,直到删除操作主动清除

持久顺序节点 (Persistent)

-s 来创建
就是有顺序的持久节点,节点特性与持久节点一样,只是额外特性表现在顺序上.
顺序特性实质是在创建节点的时候,会在节点后面加了一个数字后缀,来表示顺序
ZooKeeper数据模型Znode_第2张图片
删除
ZooKeeper数据模型Znode_第3张图片

临时性节点 (Ephemeral)

就是会被自动清理掉的节点,客户端断开连接,会话结束,节点就会被删除,
临时节点不能创建子节点
分布式锁就是基于临时节点 实现的
-e 创建临时节点

临时顺序性性节点 (Sequential)

-e -s
就是有顺序的临时节点,和持久顺序节点相同,创建节点的时候,会在节点后面加了一个数字后缀,来表示顺序

事务id

Zookeeper为分配一个全局的唯一的事务ID,用ZXID来表示,通常是一个64的数字,每一个ZXID对应一次更新操作,从ZXID中可以间接的识别出Zookeeper处理这些更新操作请求的全局顺序.

Znode状态

ZooKeeper数据模型Znode_第4张图片

[zk: localhost:2181(CONNECTED) 14] ls -s /zookeeper
[config, quota]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 = -2
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 2

分为2部分,节点数据内容和节点状态信息,图中Config 与quota 是内容,其他的是状态信息

  • ctime Create Time 表示节点创建时间
  • cZxid Create ZXID 节点创建时的事务id
  • mZxid Modified ZXID,表示节点最后一次被修改时的事务id
  • mtime Modified Time ,表示节点最后一次被修改时的时间
  • pZxid 表示该节点的子节点列表最后一次被修改时的事务ID,只有子节点列表变更才会更新pZxid,子节点内容变更不会更新
  • cversion 表示子节点的版本号
  • dataVersion 内容版本号
  • aclVersion 标识ACL版本
  • ephemeralOwner 表示创建该有临时节点时的会话SessionId,如果持久性节点那么值是0
  • dataLength 表示数据长度
  • numChildren 表示直系子节点的数量

你可能感兴趣的:(训练,zookeeper)