【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可以作为保存数据的容器(如同文件),也可以作为保存其他节点的容器(如同目录 ...
随机推荐
- java.lang.reflect.Method.getAnnotation()方法示例【通过反射获取到方法对象再获取方法对象上的注解信息】
转: java.lang.reflect.Method.getAnnotation()方法示例 java.lang.reflect.Method.getAnnotation(Class <T&g ...
- Kafka管理与监控——调优
1.JVM参数配置优化 如果使用的CMS GC算法,建议JVM Heap不要太大,在4GB以内就可以.JVM太大,导致Major GC或者Full GC产生的“stop the world”时间过长, ...
- React Native使用Redux总结
1>npm安装redux: "react-redux": "^5.0.5", "redux": "^3.7.1", ...
- Swift3.0项目学习: 创建撰写按钮
import UIKit class PSMainViewController: UITabBarController { override func viewDidLoad() { super.vi ...
- YII框架中可以使用foreach遍历对象以及可以使用数组形式直接访问对象的原因
YII框架中可以使用foreach遍历对象以及可以使用数组形式直接访问对象的原因在YII框架的使用过程中,我们可以使用foreach直接遍历findAll等方法返回的对象的属性为什么呢?其实这与CMo ...
- 【JVM学习笔记】扩展类加载器
扩展类加载器独有的特点,代码如下 public class Sample { } public class Test { static { System.out.println("Test ...
- 7. grep
grep命令 grep grep是通用正则表达式分析程序(General Regular Expression Parser)的缩写. grep命令可以在它的输入中搜索指定的字符串模式(Pattern ...
- GIL全局解释器锁,线程池与进程池 同步异步,阻塞与非阻塞,异步回调
GIL全局解释器锁 1.什么是GIL 官方解释:'''In CPython, the global interpreter lock, or GIL, is a mutex that prevents ...
- USACO 1.1 Your Ride Is Here
直接模拟 #include<cstdio> #include<cstring> using namespace std; #define MAXN 10 #define MOD ...
- vscode setting.json (@vue/eslint-config-prettier)
{ "workbench.colorTheme": "Default Light+", // 主题 "terminal.integra ...