ZooKeeper数据模型/znode节点深入

1、Znode的数据模型
1.1 Znode是什么?

Znode维护了一个stat结构,这个stat包含数据变化的版本号、访问控制列表变化、还有时间戳。版本号和时间戳一起,可让Zookeeper验证缓存和协调更新。每次znode的数据发生了变化,版本号就增加。
1.2 ZooKeeper的Stat结构体

java 复制代码
czxid- 引起这个znode创建的zxid,创建节点的事务的zxid(ZooKeeper Transaction Id)
每次修改ZooKeeper状态都会收到一个zxid形式的时间戳,也就是ZooKeeper事务ID。
事务ID是ZooKeeper中所有修改总的次序。每个修改都有唯一的zxid,如果zxid1小于zxid2,那么zxid1在zxid2之前发生。
ctime - znode被创建的毫秒数(从1970年开始)
mzxid - znode最后更新的zxid
mtime - znode最后修改的毫秒数(从1970年开始)
pZxid-znode最后更新的子节点zxid
cversion - znode子节点变化号,znode子节点修改次数
dataversion - znode数据变化号
aclVersion - znode访问控制列表的变化号
ephemeralOwner- 如果是临时节点,这个是znode拥有者的session id。如果不是临时节点则是0x0。
dataLength- znode的数据长度
numChildren - znode子节点数量

例:

(1)创建新的子节点,并添加数据。

(2)获取新创建的子节点。

(3)修改创建的子节点内容。

(4)获取修改后的子节点内容。

使用help 查看有哪些命令

java 复制代码
案例所对应的命令
(1)create /test javademo1
(2)get /test
(3)set /test javademo2
(4)get /test

2、Znode中的存在类型

2.1 PERSISTENT-持久化目录节点

客户端与zookeeper断开连接后,该节点依旧存在

java 复制代码
# create  /demo01 java01

2.2 PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点

客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号

java 复制代码
# create -s /demo011 java011

2.3 EPHEMERAL-临时目录节点

客户端与zookeeper断开连接后,该节点被删除

java 复制代码
# create -e /demo2 java2

2.4 EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点

客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号

java 复制代码
# create -s -e /demo03 /java03

默认情况下是持久化节点!

相关推荐
yumgpkpm1 小时前
腾讯云TBDS与CDH迁移常见问题有哪些?建议由CDH迁移到CMP 7.13 平台(类Cloudera CDP,如华为鲲鹏 ARM 版)
hive·hadoop·zookeeper·flink·spark·kafka·hbase
无心水2 小时前
【分布式利器:限流】3、微服务分布式限流:Sentinel集群限流+Resilience4j使用教程
分布式·微服务·架构·sentinel·分布式限流·resilience4j·分布式利器
wadesir3 小时前
当前位置:首页 > 服务器技术 > 正文Linux网络HSRP协议(实现路由器热备份与高可用性的实用指南)
linux·服务器·网络
泡沫·3 小时前
4.iSCSI 服务器
运维·服务器·数据库
胡八一3 小时前
解决PHP未检测到您服务器环境的sqlite3数据库扩展报错
服务器·数据库·php
一起学开源3 小时前
分布式基石:CAP定理与ACID的取舍艺术
分布式·微服务·架构·流程图·软件工程
雁于飞3 小时前
分布式基础
java·spring boot·分布式·spring·wpf·cloud native
不解不惑3 小时前
OpenAI whisper 语音识别服务器搭建
服务器·whisper·语音识别
gaize12133 小时前
适合业务规模较大的场景的服务器测评
服务器
悠悠121384 小时前
告别Zabbix?我用Netdata只花10分钟就搞定了50台服务器的秒级监控(保姆级实战)
运维·服务器·zabbix