当前位置: 首页 > news >正文

5.0 ZooKeeper 数据模型 znode 结构详解

数据模型

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

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

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

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

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

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

$ 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 ,如下图所示:

$ set /runoob 1

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

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

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

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

执行完终端命令行显示:

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

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

http://www.lryc.cn/news/295399.html

相关文章:

  • 《数电》理论笔记-第1章-逻辑代数基础
  • 计算指定路径下的可用空间大小
  • 2023年全球软件架构师峰会(ArchSummit上海站):核心内容与学习收获(附大会核心PPT下载)
  • 踩坑实录(Second Day)
  • 已解决org.springframework.web.HttpMediaTypeNotAcceptableException异常的正确解决方法,亲测有效!!!
  • 根据MySql建表语句创建Java实体类工具
  • 做跨境电商需要使用住宅代理IP吗?
  • vue3 之 组合式API—reactive和ref函数
  • Python库-PyAutoGUI
  • 越权测试是什么?
  • H5 简约四色新科技风引导页源码
  • 使用 VTK 中的单元定位器来查找最近的点
  • 时序预测 | MATLAB实现基于CNN-LSTM-AdaBoost卷积长短期记忆网络结合AdaBoost时间序列预测
  • Xcode 15 及以上版本:libarclite 库缺少问题
  • Spring设计模式之单例模式
  • Fink CDC数据同步(二)MySQL数据同步
  • JavaWeb后端开发(第一期):Maven基础、Maven的安装配置、如何创建maven项目模块、maven的生命周期
  • Windows SDK(四)鼠标和键盘消息处理
  • LabVIEW汽车自燃监测预警系统
  • 数据图表方案,企业视频生产数据可视化
  • 【HarmonyOS应用开发】APP应用的通知(十五)
  • 开启一个服务,将服务器指定的文件读取,传播到网上其他终端
  • nii convert to 2D image【python】
  • C语言指针学习 之 指针是什么
  • 【文本到上下文 #10】探索地平线:GPT 和 NLP 中大型语言模型的未来
  • (四)elasticsearch 源码之索引流程分析
  • 飞天使-k8s知识点16-kubernetes实操1-pod
  • 【gcc】webrtc发送侧 基于丢包更新码率
  • 数字经济的未来:探索Web3的商业模式
  • Centos7部署MetaBase-v0.48.3