【4】Zookeeper数据模型
一、Znode节点是什么
1.1、概念
Znode节点是Zookeeper中数据模型中最小的数据单元。Zookeeper的数据模型是一颗树,由"/"进行分割路径。每个znode都会保存自己的数据内容,同时还会保存一些属性信息。zookeeper将所有的数据存储在内存中。
1.2、数据模型
Zookeeper的视图结构类似标准的Unix文件系统,但是没有引入文件系统中目录和文件相关概念,而是使用了自己特有的数据节点的概念,称为Znode。每个Znode上都可以保存数据,同时还可以挂载子节点,也构成了一个层次化的命名空间,称之为树。

1.3、Znode节点分类
ZooKeeper中的数据节点是有生命周期的,周期长短取决于节点类型。 ZooKeeper 将Znode节点可以分为:持久节点(PERSISTENT )、临时节点(EPHEMERAL)。同时还允许为每个节点添加一个特殊属性:顺序性(SEQUENTIAL )。具体在节点创建过程中,一般是组合使用,生成以下 4 种节点类型:
持久节点(PERSISTENT)
指在该数据节点创建后,就一直存在与Zookeeper服务器上,直到有删除操作来主动清除这个节点。不会因为创建该节点的客户端会话失效而消失。
持久顺序节点(PERSISTENT_SEQUENTIAL)
这类节点的基本特性和持久节点节点是一致的。额外的特性是其顺序性。在ZK中每个父节点会为他的第一级子节点维护一份顺序,用于记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时,可以设置这个属性,那么在创建节点过程中,ZK会自动在节点后面加一个整形数字。作为新的、完整的节点名。这个数字是由父节点维护的递增数字,其范围是整型的最大值。
临时节点(EPHEMERAL)
和持久节点不同,临时节点的生命周期和客户端会话绑定。如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非TCP连接断开。
临时顺序节点(EPHEMERAL_SEQUENTIAL)
临时顺序节点的基本特性和临时节点是一致的,同样是在临时节点的基础上添加了顺序的特性。
注意:
- 临时节点下面不能创建子节点,即临时节点只能作为叶子节点。
1.4、Znode节点状态信息

| 参数 | 说明 |
|---|---|
| cZxid | 创建节点时的事务Zxid |
| ctime | 创建节点时的时间 |
| mZxid | 最后修改节点时的事务Zxid |
| mtime | 最后修改节点时的时间 |
| pZxid | 表示该节点的子节点列表最后一次修改的事务ID,添加或删除子节点会变,修改子节点数据内容不影响此Zxid |
| cversion | 子节点版本号,子节点每次修改版本号加1 |
| dataversion | 数据版本号,数据每次修改该版本号加1 |
| aclversion | 权限版本号,权限每次修改该版本号加1 |
| ephemeralOwner | 若此节点为临时节点,其值为节点Owner的会话ID;否则值为0 |
| dataLength | 该节点数据域长度 |
| numChildren | 该节点拥有子节点的数量 |
参考资料
参考书籍:从Paxos到Zookeeper:分布式一致性原理与实践
DeepInThought
出处:
https://www.cnblogs.com/DeepInThought
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【4】Zookeeper数据模型的更多相关文章
- Zookeeper数据模型及其应用
Zookeeper作为分布式系统的底层协调服务有着其简单可依靠的数据模型,数据模型加之数据同步.一致性处理和可靠性,在此之上有很多经典的应用,例如,分布式锁.服务器动态上线下感知.主节点选举.数据发布 ...
- 3.Apache ZooKeeper数据模型
1. ZooKeeper自下向上的服务视图 Apache ZooKeeper是分布式应用程序的协调服务. 它旨在解决分布式应用程序中与组件协调相关的棘手问题. 它通过暴露一个简单而强大的接口来实现这一 ...
- zookeeper系列之十—zookeeper数据模型
团队博客:http://rdc.taobao.com/team/jm/archives/tag/zookeeper <ZooKeeper快速搭建>http://nileader.blog. ...
- zookeeper系列之九—zookeeper数据模型
http://nileader.blog.51cto.com/1381108/946788 本文主要讲述了Zookeeper的数据模型,包括Zookeeper的数据视图,节点的层次结构以及节点类型等基 ...
- ZooKeeper 数据模型
本文主要讲述ZooKeeper的数据模型,包括ZooKeeper的数据视图,节点的层次结构以及节点类型等基本属性.Zookeeper的视图结构类似标准的Unix文件系统,但是没有引入文件系统相关概念: ...
- ZooKeeper 数据模型:节点的特性与应用
zk的基础知识基本分为三大模块 数据模型 ACL 权限控制 Watch 监控 数据模型 默认配置文件 # The number of milliseconds of each tick tickTim ...
- ZooKeeper数据模型
ZooKeeper有一个分层的命名空间,类似分布式文件系统.它们唯一的区别就在于在命名空间中每个节点可以有数据关联作为它们的子节点.这就像有一个文件系统允许文件也作为文件目录.节点路径通常表示为规范的 ...
- 【转载】zookeeper数据模型
[转载请注明作者和原文链接, 如有谬误, 欢迎在评论中指正. ] ZooKeeper的数据结构, 与普通的文件系统极为类似. 见下图: 图片引用自developerworks 图中的每个节点称为一个 ...
- ZooKeeper入门(三) ZooKeeper数据模型
1 简述 ZooKeeper可以看成一种高可用性的文件系统,但是,它没有文件和目录,而是使用节点,称为znode. znode可以作为保存数据的容器(如同文件),也可以作为保存其他节点的容器(如同目录 ...
随机推荐
- 线程池使用Callable示例【我】
实际工作中可以把下面的代码直接拿过去改改即可 package threadtest; import java.util.ArrayList; import java.util.HashMap; imp ...
- 从Myeclipse到IntelliJ IDEA-——让你摆脱鼠标,全键盘操作
注:本文是对原文章(https://blog.csdn.net/luoweifu/article/details/13985835)做的补充 快捷键对比 Myeclipse IDEA 说明 Ctrl+ ...
- Leetcode之动态规划(DP)专题-188. 买卖股票的最佳时机 IV(Best Time to Buy and Sell Stock IV)
Leetcode之动态规划(DP)专题-188. 买卖股票的最佳时机 IV(Best Time to Buy and Sell Stock IV) 股票问题: 121. 买卖股票的最佳时机 122. ...
- sublime的Package Control的安装及使用
一.快速安装 使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码(注意下面代码为一行): import urllib.request,os; pf = ...
- js放到head中失效的原因与解决方法
1.今天写js碰到一个奇怪的问题,写好的js放到body里面执行,但是放到head中没有任何效果,为什么导致这种原因呢? 看失效代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
- GIP画图
世界坐标:相对于winform窗体来说的, 页面坐标:相对于控件的 设置坐标:相对于显示器 获得Graphics对象一般有两种方式: 1.控件.CreateGraphics();//通过该方式创建后要 ...
- 虚拟机ubuntu连不上网
虚拟机ubuntu连不上网 解决地址:https://blog.csdn.net/spy_h/article/details/80933458
- php链接redis (带密码)常用的redis方法
连接redis $redis = new Redis(); $redis->connect($host, $port); $redis->auth('my pass'); //密码验证 常 ...
- docker入门到放弃
1.容器简介 Docker是一个开源的应用容器引擎,使用Go语言开发,基于Linux内核的cgroup,namespace,Union FS等技术,对应用进程进行封装隔离,并且独立于宿主机与其他进程, ...
- spark on yarn UI界面详解
参考: spark on yarn图形化任务监控利器:History-server帮你理解spark的任务执行过程 spark内存分配原理 yarn运行原理详解 task,executor,core等 ...