首先来了解一下ZooKeeper的数据模型,源代码中会有很多诸如zxid, czxid等这样的变量,那这些到底是什么呢?我在网上查了一些资料,分享一下:
以上举的那两个例子,叫做Zk的节点(znode)的状态信息,可以通过get命令获取,成为Stat:
-
czxid
The zxid of the change that caused this znode to be created.
-
mzxid
The zxid of the change that last modified this znode.
-
ctime
The time in milliseconds from epoch when this znode was created.
-
mtime
The time in milliseconds from epoch when this znode was last modified.
-
version
The number of changes to the data of this znode.
-
cversion
The number of changes to the children of this znode.
-
aversion
The number of changes to the ACL of this znode.
-
ephemeralOwner
The session id of the owner of this znode if the znode is an ephemeral node. If it is not an ephemeral node, it will be zero.
-
dataLength
The length of the data field of this znode.
-
numChildren
The number of children of this znode.
如果感觉英文看不太清楚的话,我分享一张表格说明一下:
其实还有一个ephemeralOwner的状态:如果节点为临时节点,那么这个值为此节点拥有者的session ID,否则值为0.
那么,什么是zxid呢?答:ZooKeeper状态的每一次改变, 都对应着一个递增的Transaction id
, 该id称为zxid. 由于zxid的递增性质, 如果zxid1小于zxid2, 那么zxid1肯定先于zxid2发生. 创建任意节点, 或者更新任意节点的数据, 或者删除任意节点, 都会导致Zookeeper状态发生改变, 从而导致zxid的值增加.
我们知道,Zookeeper中对znode状态进行监听并及时的反馈给客户端,这个有点像观察者模式。事实上,watcher也是有自己的一套规则的:
1.Znode状态发生改变时(增删改等操作),watch (监视器)机制可以让客户端得到通知,并且仅仅只会触发一次watch。
2.在读操作exists、getChildren和getData上可以设置监视器,这些监视器可以被create、delete和setData触发。
3.当所监视的znode被创建子节点、删除或其他数据更新时,设置在exists操作上的监视器将会被触发。
4.当所监视的znode被删除或其更新时,设置在getData上的监视器将会被触发,创建znode不会触发getData上的监视器,因为getData操作成功执行的前提是znode必须已经在。
5。当所监视的znode的一个子节点被创建或删除时,或监视的znode自己被删时,设置在getChildren操作上的监视器将会被触发。
我在word中画一张图展示一下:
ps:
1.每个znode创建时都会有一个ACL列表,用于决定谁可以执行那些操作。
2.临时节点不允许有子节点。
相关推荐
3天精通zookeeper视频详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程内容: zookeeper简介 zookeeper数据模型 zookeeper单机安装 zookeeper常用shell命令 zookeeper的Acl权限控制 zookeeper...
《Zookeeper学习资料 中篇》 Zookeeper,作为Apache Hadoop的一个子项目,是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作...
#### 四、Zookeeper 数据模型 Zookeeper 的数据模型由节点构成,节点也被称为 znode。每个 znode 有以下属性: - `cZxid`: 创建节点时的事务 ID。 - `ctime`: 节点创建时间。 - `mZxid`: 最近一次修改节点时的事务...
### Zookeeper 学习中的疑难问题总结 #### 一、Zookeeper 概念与特性 Zookeeper 是一个分布式的、开放源码的应用程序协调服务,它最初是 Google 的 Chubby 项目的开源版本。Zookeeper 在分布式系统中扮演了一个至...
ZNode分为四种类型:PERSISTENT(持久化节点)、EPHEMERAL(临时节点)、PERSISTENT_SEQUENTIAL(持久顺序节点)和EPHEMERAL_SEQUENTIAL(临时顺序节点)。其中,临时节点在创建它的客户端会话结束时自动删除,而...
ZooKeeper的配置部分(系列之四)通常涉及设置服务器角色、指定数据存储位置、设置客户端连接参数等。这些配置有助于调整ZooKeeper的行为以适应不同的应用场景。 系列之五和六可能涉及ZooKeeper的运行机制和四字...
### Zookeeper 学习入门知识点 #### 一、Zookeeper 概述与核心价值 - **定义**: Zookeeper 是一个高度可靠的关键值存储系统,它主要用于解决分布式环境中的一致性问题,例如配置管理、命名服务、分布式同步以及...
1. 友好的用户界面:相比于命令行操作,图形化界面提供了更加直观的操作方式,减少了学习成本,使非专业技术人员也能轻松上手。 2. 实时监控:图形化界面可以实时展示Zookeeper集群的状态,包括节点信息、会话信息、...
#### 四、Zookeeper 的部署 1. **单机部署**:适用于测试环境或小规模的应用场景。 2. **集群部署**:为了提高系统的可用性和容错能力,通常采用集群的方式部署Zookeeper。集群中的每个服务器节点之间通过Zab协议...
“zookeeper学习笔记.vsdx”可能是一个Visio图表,用于可视化Zookeeper的数据结构、工作流程或架构;而“zookeeper-trunk”可能是一个源码仓库,包含Zookeeper的源代码,适合深入理解其内部机制和进行二次开发。 ...
**Zookeeper入门练习Demo** Zookeeper是一个分布式协调服务,由Apache Hadoop...这将为后续深入学习和应用Zookeeper打下坚实的基础。在实践中遇到问题,不要忘记查阅官方文档和社区资源,它们会提供详细的解答和指导。
【Zookeeper 学习1】 Zookeeper 是一个分布式协调服务,广泛应用于分布式系统中的命名服务、配置管理、集群管理等领域。它提供了高可用、高性能的数据一致性保障,是Apache Hadoop项目的一部分。 1、Zookeeper ...
四、Zookeeper的编程接口 Zookeeper提供了Java和C两种主要的API,开发者可以通过API实现对ZNode的操作,如创建、读取、更新和删除等。此外,还有基于这些API开发的高级库,如Curator,提供了更便捷的操作方式和更...
在开始学习之前,读者需要具备良好的Java基础,因为Zookeeper服务器运行于Java虚拟机(JVM)之上,同时还需要对分布式处理和Linux环境有一定的了解。 #### 五、版权与免责声明 本教程版权归TutorialsPoint(I)Pvt.Ltd...
四、ZooKeeper的操作API ZooKeeper提供了丰富的操作API,如create、exists、getChildren、getData、setData、delete等,这些API使得开发人员能够方便地进行读写操作、监控节点变化等。 五、ZooKeeper的架构与复制...
资源文件主要是用来学习zookeeper的可视化连接工具, 我们在用java或其他测试zookeeper的增加节点和删除节点的情况下,可以看到实时效果,学习很方便, 在部署zookeeper环境的时候,我们也可以通过工具来确定环境是否...
学习并掌握ZooKeeper的知识点,对于理解分布式系统的工作原理,以及开发和维护高可用性的分布式应用至关重要。这份中文指南无疑是为那些没有相关书籍作为参考的开发者提供了宝贵的资源,帮助他们快速上手并熟练使用...
四、Zookeeper Watcher机制 Watcher是Zookeeper提供的一种异步通知机制,客户端可以为某个ZNode设置Watcher,当该ZNode发生变更时,Zookeeper将触发Watcher事件,向客户端发送通知。 五、Zookeeper API详解 3.4.8...
#### 四、Zookeeper 集群角色 Zookeeper 集群通常包含以下几种角色: - **Leader**:负责接收客户端的所有写请求,并将这些请求同步到所有 Follower 节点上。 - **Follower**:负责处理客户端的读请求,以及与 ...
《Zookeeper入门到精通》教学视频及文档涵盖了分布式协调...通过学习《Zookeeper入门到精通》的教学视频和文档,你将全面掌握Zookeeper的基础知识,并能灵活运用到实际的分布式系统开发和运维中,提升你的IT技能水平。