ZK其核心原理满足CP, 实现的是最终一致性, 它只保证顺序一致性.

zookeeper 基于 zxid 以及阻塞队列的方式来实现请求的顺序一致性。如果一个client连接到一个最新的 follower 上,那么它 read 读取到了最新的数据,然后 client 由于网络原因重新连接到 zookeeper 节点,而这个时候连接到一个还没有完成数据同步的 follower 节点,那么这一次读到的数据不久是旧的数据吗?实际上 zookeeper 处理了这种情况,client 会记录自己已经读取到的最大的 zxid,如果 client 重连到 server 发现 client 的 zxid 比自己大连接会失败

ZK 选举机制

ZK选举投票核心逻辑

FastLeaderElection通信使用的是ServerSocket, 没有使用NIO/Netty.因为集群通信的节点毕竟有限.


Watch机制

ZooKeeper 的 Watcher 机制,总的来说可以分为三个过程:客户端注册 Watcher、服务器处理 Watcher 和客户端回调 Watcher 客户端注册 watcher 有 3 种方式,getData、exists、getChildren;

getData()和exists()返回节点的内容,getChildren()返回子节点列表

实现原理

ZooKeeper 允许客户端向服务端注册一个 Watcher 监听,当服务端的一些指定事件触发了这个 Watcher,那么就会向指定客户端发送一个事件通知来实现分布式的通知功能。

ZooKeeper 的 Watcher 机制主要包括客户端线程、客户端 WatchManager 和 ZooKeeper 服务器三部分。在具体工作流程上,简单地讲,客户端在向 ZooKeeper 服务器注册 Watcher 的同时,会将 Watcher 对象存储在客户端的 WatchManager 中。当 ZooKeeper 服务器端触发 Watcher 事件后,会向客户端发送通知,客户端线程从 WatchManager 中取出对应的 Watcher 对象来执行回调逻辑。如清单 9 所示,WatchManager 创建了一个 HashMap,这个 HashMap 被用来存放 Watcher 对象。

注: 以上图片来自于咕泡mic老师课程.

转载于:https://www.cnblogs.com/snow-man/p/11213404.html

zookeeper watch笔记相关推荐

  1. 【Zookeeper】Zookeeper部署笔记

    Zookeeper部署笔记 1.上传zk安装包2.解压3.配置(先在一台节点上配置)3.1添加一个zoo.cfg配置文件$ZOOKEEPER/confmv zoo_sample.cfg zoo.cfg ...

  2. ZooKeeper学习笔记(八):ZooKeeper集群写数据原理

    写数据原理 写流程直接请求发送给Leader节点 这里假设集群中有三个zookeeper服务端 ACK (Acknowledge character)即是确认字符,在数据通信中,接收站发给发送站的一种 ...

  3. 尚硅谷大数据技术Zookeeper教程-笔记01【Zookeeper(入门、本地安装、集群操作)】

    视频地址:[尚硅谷]大数据技术之Zookeeper 3.5.7版本教程_哔哩哔哩_bilibili 尚硅谷大数据技术Zookeeper教程-笔记01[Zookeeper(入门.本地安装.集群操作)] ...

  4. Zookeeper学习笔记

    Zookeeper学习笔记 概念 Zookeeper工作机制 特点 数据结构 应用场景 统一命名服务 统一配置管理 统一集群管理 软负载均衡 Zookeeper本地安装 本地模式安装 安装前准备 配置 ...

  5. 【三万字!】Dubbo、Zookeeper学习笔记!秒杀面试官!——双非上岸阿里巴巴系列

    东北某不知名双非本科,四面成功上岸阿里巴巴,在这里把自己整理的笔记分享出来,欢迎大家阅读. 恰个饭--><阿里巴巴 Java 开发手册>,业界普遍遵循的开发规范 本博客内容持续维护, ...

  6. ZooKeeper学习笔记1-----------安装启动

    ZooKeeper是一套协作服务,主要用来构建分布式架构的应用,通过ZooKeeper我们可以安全的处理分布式应用下的局部故障问题.我们知道ZooKeeper就是Hadoop中的分布式协作服务组件.下 ...

  7. 【大数据】Zookeeper学习笔记

    第1章 Zookeeper入门 1.1 概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. 1.2 特点 1.3 数据结构 1.4 应用场景 提供的服务包括:统 ...

  8. zookeeper学习笔记2

    zookeeper的实用场景有统一配置,统一命名服务,集群管理,分布式锁,分布式队列. 今天,我的实验场景是集群管理的ha功能. 实验架构如下: Server[A/B]代码: 此处,我们需要第3方的模 ...

  9. zookeeper安装笔记

    安装zookeeper,将zookeeper上传到三个服务器,保存在/usr/local/zookeeper目录下,解压tar包 tar -xzvf zookeeper-3.4.6.tar.gz 进入 ...

最新文章

  1. html 设置视频尺寸,如何使用CSS控制视频的宽高?
  2. 指向成员函数的指针有什么用_指针函数,函数指针,有点懵圈了?你能分清楚吗...
  3. C# 数据库系统中使用GDI+绘制柱状图
  4. 记录解决二次编码问题
  5. -1.#IND000 图像类型转换
  6. 建一个电赛交流群-大鱼机器人公众号专属
  7. Java接口long类型精度丢失,解决前后端交互Long类型精度丢失问题
  8. elasticsearch 6.x (二) linux部署 kibana x-pack 安装
  9. python单链表实现具体例子_Python实现数据结构线性链表(单链表)算法示例
  10. 双时隙的工作原理_双作用叶片泵工作原理是怎样的?作为8年工程师都没了解这么深...
  11. Google maps API开发(一)(转)
  12. UNIX环境高级编程之第5章:标准I/O库-习题
  13. tcpip详解有必要看吗_全屋净水知识|前置过滤器有必要安装吗?看完秒懂
  14. 深入浅出Python闭包
  15. ZeroC ICE之Hello World java客户端
  16. 如何在线免费获取RStudio Conference 2020研讨会资料
  17. 两台linux 机器互联,Red Hat Linux9.0下两台机器怎么互联
  18. java中入参_JAVA传参
  19. [编译原理读书笔记][第4章 语法分析]
  20. 【攻防世界 | WP】CAT

热门文章

  1. linux安装mysql出错( file /usr/share/mysql/czech/errmsg.sys from install of MySQL-server-5.5.31-2.el6.i6)
  2. 【Transformer】Do Vision Transformers See Like Convolutional Neural Networks?
  3. 【人体姿态估计1】Convolutional Pose Machines_2016
  4. monk js_使用Monk AI进行手语分类
  5. 使用doxygen和latex生成PDF文件
  6. IAR 下C中嵌入汇编
  7. 在县城开一家彩票站,一个月能赚多少钱?
  8. 看徐坤的话剧《性情男女》
  9. nothing to build for project 'XXX'
  10. Linux-Android启动之Init进程前传