`

zookeeper学习(四)

 
阅读更多

         首先来了解一下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.临时节点不允许有子节点。

 

  • 大小: 68.4 KB
  • 大小: 64.4 KB
分享到:
评论

相关推荐

    3天全面深入学习zookeeper视频教程

    3天精通zookeeper视频详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程内容: zookeeper简介 zookeeper数据模型 zookeeper单机安装 zookeeper常用shell命令 zookeeper的Acl权限控制 zookeeper...

    zookeeper连接可视化四个工具.zip

    资源文件主要是用来学习zookeeper的可视化连接工具, 我们在用java或其他测试zookeeper的增加节点和删除节点的情况下,可以看到实时效果,学习很方便, 在部署zookeeper环境的时候,我们也可以通过工具来确定环境是否...

    第二课:zookeeper客户端使用与集群特性.docx

    ZooKeeper 提供了 Java 与 C 两种语言的客户端,我们将学习 Java 客户端。要使用 ZooKeeper 客户端,需要引入最新的 Maven 依赖项: <groupId>org.apache.zookeeper <artifactId>zookeeper <version>3.5.5 二...

    hadoop + zookeeper +hive + hbase安装学习共12页word资料.pdf

    "Hadoop+zookeeper+hive+hbase安装学习" 本资源主要介绍了Hadoop、Zookeeper、Hive、HBase的安装和配置过程,涵盖了从Java环境变量的配置到Hadoop的安装和配置、Zookeeper的安装和配置、Hive的安装和配置、HBase的...

    hadoop-2.7.3+zookeeper-3.4.8+hadoop-2.7.3分布式环境搭建整理(王三旗亲试成功安装)

    选择语言,默认是 English,学习可以选择中文,正时环境选择 English。配置网络和主机名,主机名:master,网络选择开启,配置手动的 IPV4。选择安装位置,在分区处选择手动配置,选择标准分区,点击这里自动创建...

    Hadoop日记Day20---ZooKeeper系列(三)

    前面虽然配置了集群模式的Zookeeper,但是为了方面学建议在伪分布式模式的Zookeeper学习Zookeeper的shell命令。Zookeeper支持某些特定的四字命令字母与其的交互。他们大多数是查询命令,用来获取Zookeeper服务的当前...

    大数据学习笔记

    第二部分 ZOOKEEPER学习 24 第6章 zookeeper介绍 25 6.1 zookeeper简介 25 6.2 分布式应用程序 25 6.3 Apache Zookeeper意味着什么? 26 第7章 zookeeper基本组成与工作流程 27 第8章 zookeeper的leader节点选择 31 ...

    从传统的 SSM 项目改造成基于 Spring Boot + Dubbo + Zookeeper 的微服务架构项目

    四、使用建议 系统学习:按照资料提供的顺序进行系统学习,确保知识体系的完整性。 实践为王:在学习过程中注重实践操作,通过实际项目加深理解。 持续反馈与调整:根据学习进度和反馈,适时调整学习策略,提高学习...

    大数据学习计划.pdf

    所以在第四部分的学习中我们需要达到以下⽬标: 1 理解HBase 体系结构⽔平扩展的 优势; 部署 HBase ; 设计 HBase 表; 在这⾥我还是要推荐下我⾃⼰建的⼤数据学习交流qq裙: 142974151, 裙 ⾥都是学⼤数据开发的,...

    HADOOP&ZK&HBASE&YCSB集群搭建验证

    HADOOP&ZOOKEEPER&HBASE&YCSB集群搭建验证 ...通过这篇文章,我们学习了如何搭建和验证 HADOOP&ZOOKEEPER&HBASE&YCSB 集群。这些技术栈是大数据处理和存储的关键技术栈,掌握这些技术栈是大数据处理和存储的基础。

    RocketMQ学习笔记1

    RocketMQ在生产环境下需要四个部分组成:生产者Producer、消费者Consumer、暂存处Broker、协调者NameServer,可以在多台机器上部署多个NameServer和Broker来提高可靠性和吞吐量。 Topic和Message Queue RocketMQ...

    八斗大虚据第九期完整版.docx

    第二阶段:这一阶段会学习FLume、Kafka、Spark Streaming、Flink/Storm、Zookeeper、HBase等计算框架的开发技术,以及大数据体系内的数据采集和数据仓库理论思想和技术实现。通过项目实践,你能快速掌握这些技术,...

    flume与kafka整合高可靠教程

    在本教程中,我们学习了如何将 Flume 与 Kafka 整合,以实现高可靠的数据传输。通过安装 Kafka 和 Flume,然后配置 Flume,以实现数据的传输。该教程旨在指导读者如何实现 Flume 与 Kafka 的整合,以实现高可靠的...

    四合一分布式计算框架源代码

    淘宝Fourinone(中文名字“四不像”)是一个四合一分布式计算框架,在写这个框架之前,我对分布式计算进行了长时间的思考,也看了老外写的其他开源框架,当我们把复杂的hadoop当作一门学科学习时,似乎忘记了我们想...

    线上学习第一周总结

    线上的郑老师是一位经验丰富,技术精湛的大佬,第一个星期,就安排上了四个知识点的学习:docker ,nginx,spring boot和dubbo以及zookeeper。docker 主要是用于软件运行的环境的统一,Nginx主要是用于解决大并发时...

    java面试笔试资料包括JAVA基础核心知识点深度学习Spring面试题等资料合集.zip

    ZooKeeper.doc 为什么分布式一定要有Redis.doc 分布式、高并发、多线程,到底有什么区别.doc 分布式事务.doc 四款消息队列大比拼.docx 多台web服务器之间共享session.docx 消息中间件Kafka与RabbitMQ.doc 电商项目...

    高级java笔试题-fourinone:四合一分布式计算框架

    淘宝Fourinone(中文名字“四不像”)是一个四合一分布式计算框架,在写这个框架之前,我对分布式计算进行了长时间的思考,也看了老外写的其他开源框架,当我们把复杂的hadoop当作一门学科学习时,似乎忘记了我们想...

    史上最全面的hadoop入门视频教程

    第四章 HDFS的JavaAPI操作和MapReduce入门 第五章 MapReduce的WordCount案例和分区 第六章 MapReduce的排序和序列化 第七章 MapReduce的运行机制和join操作 第八章 MapReduce的其他操作和yarn 第九章 数仓Hive基本...

Global site tag (gtag.js) - Google Analytics