Zookeeper 的 watch 监听机制:
在 ZooKeeper 中还支持一种 watch(监听)机制, 它允许对 ZooKeeper 注册监听, 当监
听的对象发生指定的事件的时候, ZooKeeper 就会返回一个通知.
Watcher 分为以下三个过程:客户端向 ZK 服务端注册 Watcher、服务端事件发生触
发 Watcher、客户端回调 Watcher 得到触发事件情况.
触发事件种类很多,如:节点创建,节点删除,节点改变,子节点改变等。
Watcher 是一次性的. 一旦被触发将会失效. 如果需要反复进行监听就需要反复进行
注册.
监听器原理:
1.首先要有一个 main()线程
2.在 main 线程中创建 Zookeeper 客户端, 这时就会创建两个线程, 一个复制网络连
接通信(connect), 一个负责监听(listener).
3.通过 connect 线程将注册的监听事件发送给 zk, 常见的监听有
监听节点数据的变化 get path [watch]
监听节点状态的变化 stat path [watch]
监听子节点增减的变化 ls path [watch]
4.将注册的监听事件添加到 zk 的注册的监听器列表中
5.监听到有数据或路径变化, 就会将这个消息发送给 listener 线程.
6.listener 线程内部调用了 process()方法.此方法是程序员自定义的方法, 里面可以写明
监听到事件后做如何的通知操作.