位置:首页 > 其他编程语言 > ZooKeeper 5.0数据模型与znode结构详解

ZooKeeper 5.0数据模型与znode结构详解

时间:2026-08-14  |  作者:星际追番人  |  阅读:0

数据模型

在 ZooKeeper 里,几乎所有被保存下来的内容,都是通过 znode 这一层来组织的。

说得直白一点,节点本身就叫 znode,而其中的数据通常以 key/value 的方式进行存储。

整体结构类似于 linux 文件系统的模式,以树形结构存储。

其中根路径以 / 开头。

进入 zookeeper 安装的 bin 目录,通过sh zkCli.sh打开命令行终端,执行 "ls /" 命令显示:

$ ls /
$ ls /zookeeper
$ ls /zookeeper/quota

ZooKeeper 5.0数据模型与znode结构详解_wishdown.com

这时可以很直观地看出来,当前存储的数据位于根目录下。

其中包含 runoob 和 zookeeper 两个节点。

继续往下看,zookeeper 节点下面还挂着一个 quota 节点。

ZooKeeper 5.0数据模型与znode结构详解_wishdown.com

runoob 节点是在我们之前章节创建,并且通过 ja va 客户端设置值 0。

现在我们在命令行终端执行 get /runoob,显示此节点的属性。

$ get /runoob

ZooKeeper 5.0数据模型与znode结构详解_wishdown.com

其中第一行显示的 0,是该节点的 value 值。

Znode 的状态属性

  • cZxid:创建节点时的事务ID
  • ctime:创建节点时的时间
  • mZxid:最后修改节点时的事务ID
  • mtime:最后修改节点时的时间
  • pZxid:表示该节点的子节点列表最后一次修改的事务ID,添加子节点或删除子节点就会影响子节点列表,但是修改子节点的数据内容则不影响该ID(注意,只有子节点列表变更了才会变更pzxid,子节点内容变更不会影响pzxid)
  • cversion:子节点版本号,子节点每次修改版本号加1
  • data version:数据版本号,数据每次修改该版本号加1
  • aclversion:权限版本号,权限每次修改该版本号加1
  • ephemeralOwner:创建该临时节点的会话的sessionID。(**如果该节点是持久节点,那么这个属性值为0)**
  • dataLength:该节点的数据长度
  • numChildren:该节点拥有子节点的数量(只统计直接子节点的数量)

了解上面状态属性值后,我们对 /runoob 节点做一次修改。

执行命令 set /runoob 1,如下图所示:

$ set /runoob 1

ZooKeeper 5.0数据模型与znode结构详解_wishdown.com

对比上面结果,可以看到 mZxid、mtime、dataVersion 都发生了变化。

在 /runoob 节点下,我们再添加一子节点,执行:

$ create -e  /runoob/child  0
$ get /runoob

提示:更多命令使用后面章节会详解介绍。

执行完终端命令行显示:

ZooKeeper 5.0数据模型与znode结构详解_wishdown.com

可见 /runoob 节点的 pZxid、cversion、numChildren 都发生了相应的改变。

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多