Zookeeper Watcher(事件监听器)?
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(事件监听器)?相关推荐
- Ⅵ:zookeeper的Watcher事件监听机制
2021最新zookeeper系列 ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤ ...
- zookeeper watch java_Apache ZooKeeper Watcher 机制源码解释
分布式系统从根本上来说就是不同节点上的进程并发执行,并且相互之间对进程的行为进行协调处理的过程.不同节点上的进程互相协调行为的过程叫做分布式同步.许多分布式系统需要一个进程作为任务的协调者,执行一些其 ...
- android监听器在哪里创建,[转载]android开发中创建按钮事件监听器的几种方法
第一种:匿名内部类作为事件监听器类 Button button=(Button) findViewById(R.id.button); button.setOnClickListener(new On ...
- 【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 创建 事件监听器 对应的 动态代理 | 动态代理的数据准备 | 创建调用处理程序 | 创建动态代理实例对象 )
文章目录 前言 一.创建 事件监听器 对应的 动态代理 二.动态代理 数据准备 三.动态代理 调用处理程序 四.动态代理 实例对象创建 前言 Android 依赖注入的核心就是通过反射获取 类 / 方 ...
- 【Android 事件分发】ItemTouchHelper 源码分析 ( OnItemTouchListener 事件监听器源码分析 二 )
Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) [Andr ...
- 【Android 事件分发】ItemTouchHelper 源码分析 ( OnItemTouchListener 事件监听器源码分析 )
Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) [Andr ...
- Android 事件与事件监听器
Android系统中常见的事件监听器有如下几种: 1.单击事件(View.OnClickListener):当用户触碰到某个组件或者方向键被按下时产生该事件,该事件的处理方法是onClick(). 2 ...
- android 控件监听方法,Android界面控件(2)—注册点击事件监听器
Button和ImageButton 1.添加控件 1.打开Android项目下,res文件夹中的 layout 的 activity_main.xml 文件 2.可视化界面拖拽添加或修改 xml 文 ...
- 13、Java Swing事件监听:事件处理模型和事件监听器
事件表示程序和用户之间的交互,例如在文本框中输入,在列表框或组合框中选择,选中复选框和单选框,单击按钮等.事件处理表示程序对事件的响应,对用户的交互或者说对事件的处理是事件处理程序完成的. 当事件发生 ...
最新文章
- linux 两个虚拟机 socket本地,两台虚拟机Linux系统socket通信
- JAVAEE框架之Spring JdbcTemplate
- Cypress 的 before 和 beforeEach 钩子函数的使用方式
- paypal创建订单后怎么获得id_PayPal开放加密数字货币买卖 2021年将支持2600万家商户购物...
- 北京热风文化传媒有限公司 公司介绍
- Spring学习总结(8)——25个经典的Spring面试问答
- c access mysql数据库_基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo)...
- 鸿蒙公测第二期报名地址,鸿蒙2.0第二期公测报名入口及参加方法
- addu指令_大金哥的超标量处理器学习笔记之5——指令集体系
- 数学建模(零)入门统领
- ARP欺骗的艺术 | 断网与监听
- 关于 chrome 上支付宝安全控件无法使用,以及检测不到数字证书的问题
- 怎么用计算机打出汉字,Windows XP电脑入门如何使用输入法输入汉字
- Tomcat 运行 maven项目报错 com.sun.faces.config.ConfigureListener
- 十大跑步运动耳机品牌有哪些,质量比较好的运动耳机品牌推荐
- 2022 国际培训产品博览会--第十一届,2022.11.17-19日,深圳
- html中引用本电脑没有的字体
- BUPT 离散下期末复习(在考试结束前不断迭代)
- 设置相机水印字体的大小、位置
- 小型,低成本,低功耗一次性无线电设备
热门文章
- [轉]VS2010 UML类图生成代码
- 【记录】我在浙江省机器人大赛的第一天
- SpringBoot之获取配置文件中的数据
- 数仓中的星型模型和雪花模型
- java jlabe_[求助]JPanel上怎么移除JLabe。l
- webapi输出炜json_.Net基于MVC4 Web Api输出Json格式实例
- HDOJ-2036 求多边形面积
- 如何让char不要忽略开头的空格_如何使用C语言实现JSON解析库(二)
- VBA打开TXT类文件读写相关操作代码
- Radware LP 增加线路接口操作