Appearance
针对每个节点的操作都会有一个监督者wathcer,当监控的某个对象(节点)发生了变化,则触发watcher事件;
- zk中的watcher是一次性的,触发后立即销毁;
- java的客户端API提供了永久性的功能,但ZK本身的watcher机制只支持一次性操作。
- 父节点、 子节点增删改都能够触发其watcher
watcher相关命令
- 在get、ls或stat命令最后添加watch字段,则对当前查看的节点进行监督;比如
get /xk857 watch
- 添加watcher后,父子节点的增删改查操作会触发不同的事件
- 创建父节点触发:NodeCreated
- 修改父节点数据触发: NodeDataChanged
- 删除父节点触发: NodeDeleted
- 为父节点设置watcher,创建子节点触发:NodeChildrenChanged
- 删除子节点触发:NodeChildrenChanged
- 为父节点设置watcher,修改子节点不触发事件
watcher使用场景
统一资源配置:当某个节点的数据或状态发生变化时,通过watcher监听到变化,然后去更新其他节点或连接到当前ZK客户端的配置。