客户端,可以通过在
znode
上设置
watch
,实现
实时监听znode
的变化
Watch事件是⼀个⼀次性的触发器
,当被设置了Watch的数据发⽣了改变的时候,则服务器将这个改变发送给设置了Watch的客户端
- ⽗节点的创建,修改,删除都会触发Watcher事件。
-
⼦节点的创建,删除会触发Watcher事件。
⼀次性:⼀旦被触发就会移除,再次使⽤需要重新注册,因为每次变动都需要通知所有客户端,⼀次性可以减轻压⼒,3.6.0默认持久递归,可以触发多次
轻量:只通知发⽣了事件,不会告知事件内容,减轻服务器和带宽压⼒
Watcher 机制包括三个⻆⾊:客户端线程、客户端的 WatchManager 以及 ZooKeeper 服务器
- 客户端向 ZooKeeper 服务器注册⼀个 Watcher 监听
-
把这个监听信息存储到客户端的 WatchManager 中
-
当 ZooKeeper 中的节点发⽣变化时,会通知客户端,客户端会调⽤相应 Watcher 对象中的回调⽅法。watch回调是串⾏同步的