5.0 ZooKeeper 数据模型 znode 结构详解

数据模型

在 zookeeper 中,可以说 zookeeper 中的所有存储的数据是由 znode 组成的,节点也称为 znode,并以 key/value 形式存储数据。

整体结构类似于 linux 文件系统的模式以树形结构存储。其中根路径以 / 开头。

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

bash 复制代码
$ ls /
$ ls /zookeeper
$ ls /zookeeper/quota

我们直观的看到此时存储的数据在根目录下存在 runoob 和 zookeeper 两个节点,zookeeper 节点下存在 quota 这个节点。

runoob 节点是在我们之前章节创建,并且通过 java 客户端设置值 0,现在我们在命令行终端执行 get /runoob 显示此节点的属性。

bash 复制代码
$ get /runoob

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

Znode 的状态属性

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

了解上面状态属性值,我们对 /runoob 节点做一次修改,执行命令 set /runoob 1 ,如下图所示:

bash 复制代码
$ set /runoob 1

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

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

bash 复制代码
$ create -e  /runoob/child  0
$ get /runoob

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

执行完终端命令行显示:

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

希望你也学会了,更多编程源码模板请来二当家的素材网:https://www.erdangjiade.com

相关推荐
User_芊芊君子几秒前
【分布式训练】CANN SHMEM跨设备内存通信库:构建高效多机多卡训练的关键组件
分布式·深度学习·神经网络·wpf
Trouvaille ~10 分钟前
【Linux】TCP Socket编程实战(一):API详解与单连接Echo Server
linux·运维·服务器·网络·c++·tcp/ip·socket
酷酷的崽79821 分钟前
CANN 开源生态解析(四):`cann-dist-train` —— 构建高效可扩展的分布式训练引擎
分布式·开源
旖旎夜光1 小时前
Linux(13)(中)
linux·网络
惊讶的猫1 小时前
AMQP 与 RabbitMQ 四大模型
分布式·rabbitmq
灰子学技术1 小时前
istio从0到1:如何解决分布式配置同步问题
分布式·云原生·istio
威迪斯特1 小时前
CentOS图形化操作界面:理论解析与实践指南
linux·运维·centos·组件·图形化·桌面·xserver
一方热衷.2 小时前
在线安装对应版本NVIDIA驱动
linux·运维·服务器
独自归家的兔2 小时前
ubuntu系统安装dbswitch教程 - 备份本地数据到远程服务器
linux·运维·ubuntu
ONE_SIX_MIX2 小时前
ubuntu 24.04 用rdp连接,桌面黑屏问题,解决
linux·运维·ubuntu