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 ...
随机推荐
- python-函数参数不固定
默认参数的应用场景: 1.默认安装 2.数据库连接,默认端口号 参数不固定的情况: 参数组: args:将接收的位置参数转换成元组 def test(*args): print(args) ...
- vue 首屏渲染优化 -- 这个不错
这篇文章分享了从遇到前端业务性能问题,到分析.解决并且梳理出通用的Vue 2.x 组件级懒加载解决方案(Vue Lazy Component )的过程. 初始加载资源过多 问题起源于我们的一个页面,下 ...
- linux 部署之路 修行不够全靠悟
考虑到很多孩子不会Linux或Mysql,所以我这里提示一下, 这篇教程里 "有多行代码" 的是给你展示结果的,不用你敲 只有一行的才是要你自己敲进去的. 1.首先更新一下仓库 ...
- Python异常和异常处理
Python异常和异常处理2017年12月20日 22:17:08 Megustas_JJC 阅读数:114 标签: python 异常处理 更多 个人分类: Python 版权声明:本文为博主原创文 ...
- Invocation of init method failed; nested exception is java.text.ParseException: '?' can only be specfied for Day-of-Month or Day-of-Week.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cronTrigger' ...
- input标签(文本域和文件域)
单行文本域: <form> <input type="text" name="..." ....../> </form> 属 ...
- CodeForces - 1099F:Cookies (线段树)
Mitya and Vasya are playing an interesting game. They have a rooted tree with n vertices, and the ve ...
- day 0150面向对象-成员
一 类的成员 在类中定义的变量和方法都被称为成员 class Person: def __init__(self, name, num, gender, birthday): # 成员变量(实例变量) ...
- java中实现Comparable接口实现自定义排序
class Student implements Comparable{ String name; int gpa; @Override public int compareTo(Object arg ...
- C++学习(二十四)(C语言部分)之 结构体1
1.结构体 存放多个不同类型的数据 但是是相关联的 数组 存放多个相同类型的数据 结构体是存放多个相关联的不同类型的数组 struct 定义一个结构体类型 自定义类型 2.结构体定义方式 定义类型最通 ...