Watcher(事件监听器),是 ZooKeeper 中的一个很重要的特性。ZooKeeper 允许用户在指定节点上注册一些 Watcher,并且在一些特定事件触发的时候,ZooKeeper 服务端会将事件通知到感兴趣的客户端上去,该机制是 ZooKeeper 实现分布式协调服务的重要特性。

Watch机制官方声明:一个Watch事件是一个一次性的触发器,当被设置了Watch的数据发生了改变的时候,则服务器将这个改变发送给设置了Watch的客户端,以便通知它们。

Zookeeper watch机制的特点:

1、一次性触发数据发生改变时,一个watcher event会被发送到client,但是client只会收到一次这样的信息。

2、watcher event异步发送watcher的通知事件从server发送到client是异步的,这就存在一个问题,不同的客户端和服务器之间通过socket进行通信,由于网络延迟或其他因素导致客户端在不通的时刻监听到事件,由于Zookeeper本身提供了ordering guarantee,即客户端监听事件后,才会感知它所监视znode发生了变化。所以我们使用Zookeeper不能期望能够监控到节点每次的变化。Zookeeper只能保证最终的一致性,而无法保证强一致性。

3、数据监视Zookeeper有数据监视和子数据监视getdata() and exists()设置数据监视,getchildren()设置了子节点监视。

4、注册watcher getData、exists、getChildren

5、触发watcher create、delete、setData

6、setData()会触发znode上设置的data watch(如果set成功的话)。一个成功的create() 操作会触发被创建的znode上的数据watch,以及其父节点上的child watch。而一个成功的delete()操作将会同时触发一个znode的data watch和child watch(因为这样就没有子节点了),同时也会触发其父节点的child watch。

7、当一个客户端连接到一个新的服务器上时,watch将会被以任意会话事件触发。当与一个服务器失去连接的时候,是无法接收到watch的。而当client重新连接时,如果需要的话,所有先前注册过的watch,都会被重新注册。通常这是完全透明的。只有在一个特殊情况下,watch可能会丢失:对于一个未创建的znode的exist watch,如果在客户端断开连接期间被创建了,并且随后在客户端连接上之前又删除了,这种情况下,这个watch事件可能会被丢失。

8、Watch是轻量级的,其实就是本地JVM的Callback,服务器端只是存了是否有设置了Watcher的布尔类型

Zookeeper Watcher(事件监听器)?相关推荐

  1. Ⅵ:zookeeper的Watcher事件监听机制

    2021最新zookeeper系列 ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤ ...

  2. zookeeper watch java_Apache ZooKeeper Watcher 机制源码解释

    分布式系统从根本上来说就是不同节点上的进程并发执行,并且相互之间对进程的行为进行协调处理的过程.不同节点上的进程互相协调行为的过程叫做分布式同步.许多分布式系统需要一个进程作为任务的协调者,执行一些其 ...

  3. android监听器在哪里创建,[转载]android开发中创建按钮事件监听器的几种方法

    第一种:匿名内部类作为事件监听器类 Button button=(Button) findViewById(R.id.button); button.setOnClickListener(new On ...

  4. 【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 创建 事件监听器 对应的 动态代理 | 动态代理的数据准备 | 创建调用处理程序 | 创建动态代理实例对象 )

    文章目录 前言 一.创建 事件监听器 对应的 动态代理 二.动态代理 数据准备 三.动态代理 调用处理程序 四.动态代理 实例对象创建 前言 Android 依赖注入的核心就是通过反射获取 类 / 方 ...

  5. 【Android 事件分发】ItemTouchHelper 源码分析 ( OnItemTouchListener 事件监听器源码分析 二 )

    Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) [Andr ...

  6. 【Android 事件分发】ItemTouchHelper 源码分析 ( OnItemTouchListener 事件监听器源码分析 )

    Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) [Andr ...

  7. Android 事件与事件监听器

    Android系统中常见的事件监听器有如下几种: 1.单击事件(View.OnClickListener):当用户触碰到某个组件或者方向键被按下时产生该事件,该事件的处理方法是onClick(). 2 ...

  8. android 控件监听方法,Android界面控件(2)—注册点击事件监听器

    Button和ImageButton 1.添加控件 1.打开Android项目下,res文件夹中的 layout 的 activity_main.xml 文件 2.可视化界面拖拽添加或修改 xml 文 ...

  9. 13、Java Swing事件监听:事件处理模型和事件监听器

    事件表示程序和用户之间的交互,例如在文本框中输入,在列表框或组合框中选择,选中复选框和单选框,单击按钮等.事件处理表示程序对事件的响应,对用户的交互或者说对事件的处理是事件处理程序完成的. 当事件发生 ...

最新文章

  1. linux 两个虚拟机 socket本地,两台虚拟机Linux系统socket通信
  2. JAVAEE框架之Spring JdbcTemplate
  3. Cypress 的 before 和 beforeEach 钩子函数的使用方式
  4. paypal创建订单后怎么获得id_PayPal开放加密数字货币买卖 2021年将支持2600万家商户购物...
  5. 北京热风文化传媒有限公司 公司介绍
  6. Spring学习总结(8)——25个经典的Spring面试问答
  7. c access mysql数据库_基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo)...
  8. 鸿蒙公测第二期报名地址,鸿蒙2.0第二期公测报名入口及参加方法
  9. addu指令_大金哥的超标量处理器学习笔记之5——指令集体系
  10. 数学建模(零)入门统领
  11. ARP欺骗的艺术 | 断网与监听
  12. 关于 chrome 上支付宝安全控件无法使用,以及检测不到数字证书的问题
  13. 怎么用计算机打出汉字,Windows XP电脑入门如何使用输入法输入汉字
  14. Tomcat 运行 maven项目报错 com.sun.faces.config.ConfigureListener
  15. 十大跑步运动耳机品牌有哪些,质量比较好的运动耳机品牌推荐
  16. 2022 国际培训产品博览会--第十一届,2022.11.17-19日,深圳
  17. html中引用本电脑没有的字体
  18. BUPT 离散下期末复习(在考试结束前不断迭代)
  19. 设置相机水印字体的大小、位置
  20. 小型,低成本,低功耗一次性无线电设备

热门文章

  1. [轉]VS2010 UML类图生成代码
  2. 【记录】我在浙江省机器人大赛的第一天
  3. SpringBoot之获取配置文件中的数据
  4. 数仓中的星型模型和雪花模型
  5. java jlabe_[求助]JPanel上怎么移除JLabe。l
  6. webapi输出炜json_.Net基于MVC4 Web Api输出Json格式实例
  7. HDOJ-2036 求多边形面积
  8. 如何让char不要忽略开头的空格_如何使用C语言实现JSON解析库(二)
  9. VBA打开TXT类文件读写相关操作代码
  10. Radware LP 增加线路接口操作