??Znode节点是Zookeeper中数据模型中最小的数据单元。Zookeeper的数据模型是一颗树,由"/"进行分割路径。每个znode都会保存自己的数据内容,同时还会保存一些属性信息。zookeeper将所有的数据存储在内存中。
??Zookeeper的视图结构类似标准的Unix文件系统,但是没有引入文件系统中目录和文件相关概念,而是使用了自己特有的数据节点的概念,称为Znode。每个Znode上都可以保存数据,同时还可以挂载子节点,也构成了一个层次化的命名空间,称之为树。
??ZooKeeper中的数据节点是有生命周期的,周期长短取决于节点类型。 ZooKeeper 将Znode节点可以分为:持久节点(PERSISTENT )、临时节点(EPHEMERAL)。同时还允许为每个节点添加一个特殊属性:顺序性(SEQUENTIAL )。具体在节点创建过程中,一般是组合使用,生成以下 4 种节点类型:
持久节点(PERSISTENT)
??指在该数据节点创建后,就一直存在与Zookeeper服务器上,直到有删除操作来主动清除这个节点。不会因为创建该节点的客户端会话失效而消失。
持久顺序节点(PERSISTENT_SEQUENTIAL)
??这类节点的基本特性和持久节点节点是一致的。额外的特性是其顺序性。在ZK中每个父节点会为他的第一级子节点维护一份顺序,用于记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时,可以设置这个属性,那么在创建节点过程中,ZK会自动在节点后面加一个整形数字。作为新的、完整的节点名。这个数字是由父节点维护的递增数字,其范围是整型的最大值。
临时节点(EPHEMERAL)
??和持久节点不同,临时节点的生命周期和客户端会话绑定。如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非TCP连接断开。
临时顺序节点(EPHEMERAL_SEQUENTIAL)
??临时顺序节点的基本特性和临时节点是一致的,同样是在临时节点的基础上添加了顺序的特性。
注意:
参数 | 说明 |
---|---|
cZxid | 创建节点时的事务Zxid |
ctime | 创建节点时的时间 |
mZxid | 最后修改节点时的事务Zxid |
mtime | 最后修改节点时的时间 |
pZxid | 表示该节点的子节点列表最后一次修改的事务ID,添加或删除子节点会变,修改子节点数据内容不影响此Zxid |
cversion | 子节点版本号,子节点每次修改版本号加1 |
dataversion | 数据版本号,数据每次修改该版本号加1 |
aclversion | 权限版本号,权限每次修改该版本号加1 |
ephemeralOwner | 若此节点为临时节点,其值为节点Owner的会话ID;否则值为0 |
dataLength | 该节点数据域长度 |
numChildren | 该节点拥有子节点的数量 |
参考书籍:从Paxos到Zookeeper:分布式一致性原理与实践
原文:https://www.cnblogs.com/DeepInThought/p/11055694.html