Skip to content

针对每个节点的操作都会有一个监督者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客户端的配置。