Znode
在Zookeeper中,数据信息被保存在一个个数据节点上,这些节点被称为Znode.Znode是Zookeeper中的最小的数据单位,在Znode下面又可以再挂Znode,这样一层一层下去就形成了层次化,命名空间Znode树,称为Znode Treee,它采用类似文件系统的层级树状结构.
Znode 类型
持久节点,持久顺序节点,临时节点,临时顺序节点.
持久性节点 (Persistent)
指点被创建后就会一直存在服务器,直到删除操作主动清除
持久顺序节点 (Persistent)
-s 来创建
就是有顺序的持久节点,节点特性与持久节点一样,只是额外特性表现在顺序上.
顺序特性实质是在创建节点的时候,会在节点后面加了一个数字后缀,来表示顺序
删除
临时性节点 (Ephemeral)
就是会被自动清理掉的节点,客户端断开连接,会话结束,节点就会被删除,
临时节点不能创建子节点
分布式锁就是基于临时节点 实现的
-e 创建临时节点
临时顺序性性节点 (Sequential)
-e -s
就是有顺序的临时节点,和持久顺序节点相同,创建节点的时候,会在节点后面加了一个数字后缀,来表示顺序
事务id
Zookeeper为分配一个全局的唯一的事务ID,用ZXID来表示,通常是一个64的数字,每一个ZXID对应一次更新操作,从ZXID中可以间接的识别出Zookeeper处理这些更新操作请求的全局顺序.
Znode状态
[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 表示直系子节点的数量