可以设置观察的操作: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.关闭连接

最新文章

  1. Newtonsoft.Json 版本冲突解决
  2. ios面试总结-
  3. eclipse中python文本字体大小设置
  4. 借助fastjson 实体对象转map
  5. 中断——中断处理程序的进入与退出 (基于3.16-rc4)
  6. 从零单排Linux – 3 – 目录结构
  7. ios - cordova 简介
  8. 多线程读写共享变量时,synchronized与volatile的作用
  9. tlplayer for ios V1.0
  10. [Mobile Web]Web中如何分辨移动设备?(iPad、iPhone、Android)
  11. Supervisor配置
  12. Vim 匹配相同的单词并高亮
  13. 使用Setup安装Windows8 RTM方法
  14. Skype for Business Server 2015 企业语音部署和配置
  15. web01-helloworld
  16. ELKStack入门篇(二)之Nginx、Tomcat、Java日志收集以及TCP收集日志使用
  17. bzoj1912【Apio2010】patrol 巡逻
  18. 使用Python访问HDFS
  19. mongodb的安装使用和pymongo基本使用
  20. 【BZOJ 2744 朋友圈】

热门文章

  1. VMwarm下安装ubuntu的一些问题
  2. Spring Boot 的自动配置探究、自制一个starter pom
  3. C# 调用JS Eval,高效率
  4. 【转载】 C#中常见的泛型集合类有哪些
  5. android的子线程切换到主线程
  6. 学习笔记之正则表达式 (Regular Expressions)
  7. vue前端实战注意事项
  8. js学习之存储
  9. Vue – 基础学习(2):组件间 通信及参数传递
  10. 面试题:什么叫B*树