- 针对每个节点的操作.都会有一个监督者(watcher)
- 当监控的某个对象(ZNode)发生了变化(存储的数据修改,子节点目录的变化),则触发watcher事件,通知给设置watcher的客户端
- wtcher是一次性的触发之后立即被销毁,客户端连接断开的情况下触发的watcher会丢失
- zk保证,在客户端看到watcher时间之前是不会看到节点数据变化的
- 父节点,子节点增删改都能触发其watcher
- 针对不同类型的操作,触发的watcher事件也不同
创建watcher的命令
get /path [watch]
stat /path [watch]
//为子节点创建watcher,该命令为/path下的子节点的监听事件
ls /path [watch]
父节点Watcher事件类型:
- 创建父节点触发: NodeCreated
- 修改父节点数据触发: NodeDataChanged
- 删除父节点触发: NodeDeleted
子节点Watcher事件类型:
- 使用ls命令为父节点设置watcher,子节点被创建时触发:NodeChildrenChanged
- 使用ls命令为父节点设置watcher,子节点被删除时触发:NodeChildrenChanged
- 使用ls命令为父节点设置watcher,子节点被修改时,不触发事件