Watcher监听
2024-09-03 00:18:45
可以设置观察的操作:exists,getChildren,getData
可以触发观察的操作:create,delete,setData
zookeeper观察机制;
服务端只存储事件的信息,客户端存储事件的信息和Watcher的执行逻辑.ZooKeeper客户端是线程安全的每一个应用只需要实例化一个ZooKeeper客户端即可,同一个ZooKeeper客户端实例可以在不同的线程中使用。ZooKeeper客户端会将这个Watcher对应Path路径存储在ZKWatchManager中,同时通知ZooKeeper服务器记录该Client对应的Session中的Path下注册的事件类型。当ZooKeeper服务器发生了指定的事件后,ZooKeeper服务器将通知ZooKeeper客户端哪个节点下发生事件类型,ZooKeeper客户端再从ZKWatchManager中找到相应Path,取出相应watcher引用执行其回调函数process。
ZooKeeper Watcher 机制
为了确保集群能够正常运行,ZooKeeper 可以被用来监视集群状态,这样就可以提供集群高可用性。使用 ZooKeeper 的瞬时(ephemeral)节点概念可以设计一个集群机器状态检测机制:
1. 每一个运行了 ZooKeeper 客户端的生产环境机器都是一个终端进程,我们可以在它们连接到 ZooKeeper 服务端后在 ZooKeeper 服务端创建一系列对应的瞬时节点,可以用/hostname 来进行区分。
2. 这里还是采用监听(Watcher)方式来完成对节点状态的监视,通过对/hostname 节点的 NodeChildrenChanged 事件的监听来完成这一目标。监听进程是作为一个独立的服务或者进程运行的,它覆盖了 process 方法来实现应急措施。
3. 由于是一个瞬时节点,所以每次客户端断开时 znode 会立即消失,这样我们就可以监听到集群节点异常。
4.NodeChildrenChanged 事件触发后我们可以调用 getChildren 方法来知道哪台机器发生了异常。
使用Watcher实现增删改查
1.继承Watcher
2.连接
3.添加修改删除节点
4.process方法
5.main方法
6.关闭连接
最新文章
- Newtonsoft.Json 版本冲突解决
- ios面试总结-
- eclipse中python文本字体大小设置
- 借助fastjson 实体对象转map
- 中断——中断处理程序的进入与退出 (基于3.16-rc4)
- 从零单排Linux – 3 – 目录结构
- ios - cordova 简介
- 多线程读写共享变量时,synchronized与volatile的作用
- tlplayer for ios V1.0
- [Mobile Web]Web中如何分辨移动设备?(iPad、iPhone、Android)
- Supervisor配置
- Vim 匹配相同的单词并高亮
- 使用Setup安装Windows8 RTM方法
- Skype for Business Server 2015 企业语音部署和配置
- web01-helloworld
- ELKStack入门篇(二)之Nginx、Tomcat、Java日志收集以及TCP收集日志使用
- bzoj1912【Apio2010】patrol 巡逻
- 使用Python访问HDFS
- mongodb的安装使用和pymongo基本使用
- 【BZOJ 2744 朋友圈】