zookeeper的数据模型就是一颗树,对外的操作接口看起来就像一个小文件系统。题外话,很感慨最近遇到的好几个数据模型都是树状的,jcr的数据模型,jboss 的tree cache都是树状的表现形式。
每个Zookeeper server都存在一个相同的树,server之间需要维持树的一致性,并且任何时刻这棵树都存在在内存中,因此,我们一定要控制树的规模。树有多个节点(node)构成,要获取节点是通过path得到的。每个节点可以存储数据,节点的数据是以二进制的形式存在的。节点从存储角度看分可持久的节点和临时节点(Ephemeral node)。持久的节点保存在磁盘上,而临时节点只存储在内存中,当创建该节点的session关闭则该临时节点也自动删除。从节点的是否具有特殊性来看分普通节点和序列化节点(Sequential node)。序列化节点会在创建的节点名自动加上序列号。比如要创建/a/b/c/serieal-这样的序列化节点,如果服务器端已经存在这个序列号节点,且最大值为/a/b/c/serial-10,则新创建的名字为/a/b/c/serial-11。而普通节点的名字是由客户端指定的,服务器端不会自动改变节点的名字。下图为Zookeeper的数据模型示意图。注意,任何临时节点的父节点不能为临时节点。后续的Zookeeper应用中将会使用ephemeral_sequential作为分布式锁的实现模型。下面是一个树状图形式:
每个节点都关联一个状态,Stat,结构如下:
private long czxid; 创建本节点时的zxid
private long mzxid; 本节点最后修改时的zxid
private long ctime;创建本节点的时间,都以leader时间为准
private long mtime;本节点最后修改时的时间,以leader时间为准
private int version;通过setData会增加版本,每次修改会使version版本增加1.
private int cversion;孩子变化时会更改父亲节点的版本,每当有孩子增加或者删除时,此版本增加1
private int aversion;每当有对此节点进行setACL操作时,aversion会自动增加1
private long ephemeralOwner;如果节点为临时节点,则表明那个session创建此节点
private int dataLength;关联节点的数据长度为多少
private int numChildren;节点有多少个孩子
private long pzxid;孩子最后一次变更(增加或删除)的zxid
对于setData接口中需要提供的版本,如果为-1,则表明总是在最后的基础上修改,或者说自动覆盖原有数据,即使在发送请求的过程中已经被其他请求修改也自动覆盖。如果指定版本,如果指定的版本不是当前最新版本,则修改不会成功,会抛出badVersion错误。可以模拟CompareAndSet操作用来提供同步功能。
在一个请求的FinalRequestProcessor处理时,才将最后的结果应用到data_tree上。主要调用zks.dataTree.processTxn(request.hdr,
request.txn).
- 大小: 16.2 KB
分享到:
相关推荐
ZooKeeper的数据模型采用了类似文件系统的层次命名空间,每个节点(称为Znode)由路径标识,并包含数据、元数据以及访问控制列表。Znode分为持久节点和临时节点,后者在创建它们的会话结束时自动删除。Znode的操作...
**Zookeeper系列1:入门** Zookeeper是一款分布式协调服务,由Apache基金会开发,广泛应用于分布式系统中的数据共享、配置管理、命名服务、集群同步等场景。它的设计目标是简化分布式环境下的复杂问题,提供高可用...
ZooKeeper 的数据模型类似于文件系统,由一系列节点(ZNode)组成,每个节点可以包含数据和子节点。ZNodes分为临时节点和持久节点,临时节点在创建它的客户端断开连接后会自动删除,而持久节点则会一直存在,直到被...
Zookeeper的数据模型类似文件系统,由一系列Znode构成,每个Znode有父节点和子节点,但与文件系统不同的是,Znode可以有数据也可以有子节点,同时支持顺序节点(创建时自动添加编号)。 ### 4. 功能应用 - **命名...
ZooKeeper的数据模型类似文件系统,由一系列的ZNode构成,每个ZNode可以有子ZNode,也可以存储数据。ZNode有临时和持久两种类型,临时ZNode在创建它的会话结束时自动删除,而持久ZNode除非被显式删除,否则一直存在...
- `src/main/java/org/apache/zookeeper/data`:数据模型相关的类,如ZNode的元数据结构。 - `src/main/java/org/apache/zookeeper/server/quorum`:主备选举和ZAB协议的实现。 - `src/main/java/org/apache/...
ZooKeeper的数据模型类似于文件系统,由一系列路径名(ZNode)构成。每个ZNode都可以存储数据,同时可以有子ZNode。ZNode有三种类型:持久化节点、临时节点和顺序节点,它们分别对应不同的生命周期和命名规则。 1. ...
2. **ZNode数据模型**:Zookeeper的数据存储模型类似文件系统,由一系列的路径名(ZNode)组成,每个ZNode都可以存储数据,并且可以设置监视点(watches)。 3. **会话与心跳**:客户端与服务器之间建立会话,通过...
Zookeeper的数据模型是一个树形结构,每个节点都有自己的数据和元数据,包括版本号、ACL(访问控制列表)、时间戳等。节点分为临时节点和持久节点,临时节点在客户端会话结束时自动删除,而持久节点则一直存在,直到...
1.2 数据模型:ZooKeeper的数据结构类似于文件系统,由节点(ZNode)组成,支持读写操作,并且具备版本控制和ACL(访问控制列表)。 二、Windows上的ZooKeeper部署 2.1 安装:下载解压Zookeeper-3.4.9压缩包,将...
Zookeeper的数据模型类似于文件系统,由一系列的路径标识符组成,每个路径称为Znode。Znode可以存储数据,并且具有版本号,支持多版本控制。 **三、Zookeeper角色** 1. **Leader**: 负责处理写请求,维护全局的...
1. **Zookeeper的数据模型**:Zookeeper的数据存储结构是一个层次化的命名空间,类似于文件系统的目录结构,由一系列的Znode(节点)构成。 2. **Zookeeper的工作流程**:包括客户端连接、会话建立、请求处理、数据...
3. **数据模型**:每个ZNode都有版本号,每次数据改变都会增加版本号。ZooKeeper还支持watcher事件监听,当ZNode发生变化时,会触发已设置的watcher事件。 4. **操作API**:ZooKeeper提供了一系列的操作API,包括...
5. **数据一致性模型**:Zookeeper采用ZAB(ZooKeeper Atomic Broadcast)协议来保证数据的一致性,通过主备选举和消息广播确保所有服务器节点的数据同步。 在Linux和Windows上部署Zookeeper-3.4.10,一般包括以下...
Zookeeper的数据模型类似于文件系统的目录结构,是基于树型命名空间的。每一个znode(节点)都可以有子节点,并且每一个znode在Zookeeper中都是唯一的。znode可以是持久的,也可以是临时的。Zookeeper中的数据是...
3. ZNode:Zookeeper的数据模型,类似于文件系统的目录结构,每个节点称为ZNode,包含了数据、元数据和ACL(访问控制列表)信息。 二、Zookeeper数据存储与复制 Zookeeper的数据存储在内存中,同时持久化到磁盘。...
此外,ZooKeeper支持多种数据模型,如树形结构的数据节点(ZNode),每个节点可以存储数据并拥有ACL(访问控制列表)来管理权限。ZNode有临时节点和永久节点之分,临时节点在创建它的客户端断开连接后会自动删除。 ...
通过这些知识点的学习,我们不仅了解了如何在 Linux 环境下安装配置 zookeeper,并且还掌握了基本的操作命令和数据模型的基础知识。这对于深入理解 zookeeper 的工作原理及应用场景非常有帮助。
2. **数据模型**:Zookeeper的数据模型是一个层次化的命名空间,类似于文件系统的目录结构。节点分为临时节点和持久节点,临时节点在客户端断开连接后会被自动删除,而持久节点则一直存在,直到被显式删除。 3. **...