Zookeeper watcher机制
一、watcher机制
1、针对每个节点的操作,都会有一个监督者-> watcher
2、当监控的某个对象(znode)发生了变化,则触发watcher事件
3、zk中的watcher是一次性的,触发后立即销毁
4、父节点,子节点 增删改都能触发其watcher
5、针对不同类型的操作,触发的watcher事件也不同
1) (子)节点创建事件
2)(子)节点删除事件
3) (子)数据变化事件
二、父节点的watcher事件
通过get path [watch] 设置watcher
父节点增删改操作触发watcher
子节点增删改操作触发watcher
1. watcher事件类型
1)创建父节点触发 NodeCreated。如下图,创建nick节点,触发NoteCreated事件
2)修改父节点数据触发: NodeDataChanged
get /nick watch设置watch事件
set /nick 789 当修改节点值为789时,触发watch事件
3)删除父节点触发NodeDeleted
get /nick watch设置watch事件
删除节点 delete /nick 触发NodeDeleted事件
三、子节点watcher事件
1)ls为父节点设置watcher,创建子节点触发:NodeChildrenChanged
2)ls为父节点设置watcher,删除子节点触发:NodeChildrenChanged
3)ls为父节点设置watcher,修改子节点不触发事件
针对子节点修改,需要将子节点当做父节点一样
四、watcher使用场景
1 统一资源配置
Zookeeper watcher机制的更多相关文章
- ZooKeeper Watcher 机制
前言 在 ZooKeeper 中,客户端可以向服务端注册一个监听器,监听某个节点或者其子节点列表,当监听对象发生变化时,服务端就会向指定的客户端发送通知,这是 ZooKeeper 中的 Watcher ...
- Zookeeper Watcher 机制 -- 数据变更通知 ?
Zookeeper 允许客户端向服务端的某个 Znode 注册一个 Watcher 监听,当服务 端的一些指定事件触发了这个 Watcher,服务端会向指定客户端发送一个事件通 知来实现分布式的通知功 ...
- Zookeeper Watcher 机制 -- 数据变更通知 ?
Zookeeper 允许客户端向服务端的某个 Znode 注册一个 Watcher 监听,当服务 端的一些指定事件触发了这个 Watcher,服务端会向指定客户端发送一个事件通 知来实现分布式的通知功 ...
- zk的watcher机制的实现
转载:https://www.ibm.com/developerworks/cn/opensource/os-cn-apache-zookeeper-watcher/ http://blog.csdn ...
- 【Zookeeper】源码分析之Watcher机制(一)
一.前言 前面已经分析了Zookeeper持久话相关的类,下面接着分析Zookeeper中的Watcher机制所涉及到的类. 二.总体框图 对于Watcher机制而言,主要涉及的类主要如下. 说明: ...
- 【Zookeeper】源码分析之Watcher机制(二)
一.前言 前面已经分析了Watcher机制中的第一部分,即在org.apache.zookeeper下的相关类,接着来分析org.apache.zookeeper.server下的WatchManag ...
- 【Zookeeper】源码分析之Watcher机制(三)之Zookeeper
一.前言 前面已经分析了Watcher机制中的大多数类,本篇对于ZKWatchManager的外部类Zookeeper进行分析. 二.Zookeeper源码分析 2.1 类的内部类 Zookeeper ...
- Zookeeper的Watcher 机制的实现原理
基于 Java API 初探 zookeeper 的使用: 先来简单看一下API的使用: public class ConnectionDemo { public static void main(S ...
- 【Zookeeper】源码分析之Watcher机制(二)之WatchManager
一.前言 前面已经分析了Watcher机制中的第一部分,即在org.apache.zookeeper下的相关类,接着来分析org.apache.zookeeper.server下的WatchManag ...
随机推荐
- ES脑裂问题
脑裂:一个集群中的不同节点对于集群的状态有了不一样的理解 ES集群的总体状态是red,本来9个节点的集群在结果中只显示4个节点在线: 正常情况下,集群中的所有节点应该对集群中的master的选择是一致 ...
- 压缩后的数据 要经过 base64_encode 后才能在网络上传送
function ob_gzip($content) // $content 就是要压缩的页面内容{ if(!headers_sent() && // 如果页面头部信息还没有输出 ex ...
- C# string 与 String的区别
C# string 与 String的区别 The string type represents a string of Unicode characters. string is an alias ...
- JAVA中的Set
Set中存放的是没有重复的数据,下说记录一下使用中的小细节. 1.HashSet 区分大小写: Set<String> set1 = new HashSet<String>() ...
- [LeetCode&Python] Problem 21. Merge Two Sorted Lists
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...
- 相对和绝对路径 mkdir cd rm 等命令
1. 绝对路径和相对路径 个人理解: 绝对路径-----即从根目录开始一直到你需要找的文件或目录的路径 (即任何情况下都以根目录为起点) 相对路径------即从当前目录开始一直找到你需要找的 ...
- Blender的单位:一图弄懂Blender的单位
1设置单位,在右边的场景设置里,可以设置公制,英制.下面还可以设置基础单位长度,就是单位网格对应的长度. 2显示单位,按N出现在右边的属性栏里,可以设置选中的显示长度及角度. 3测量,按T出现在左边d ...
- random(随机模块)
程序中有很多地方需要用到随机字符,比如登录网站的随机验证码,通过random模块可以很容易生成随机字符串 >>> random.randrange(1,10) #返回1-10之间的一 ...
- js的以及前端框架
js定义:浏览器的脚本语言,用简单的语言实现浏览器的操控 基础语法:基础的运算.函数.对象(原型链.对象构造.class) 所有的框架都是基于原生的js来进行的 js的事件:什么时候.什么情况下处理的 ...
- hdu4965 Fast Matrix Calculation 矩阵快速幂
One day, Alice and Bob felt bored again, Bob knows Alice is a girl who loves math and is just learni ...