Zookeeper Watcher机制

  1. 针对每个节点的操作.都会有一个监督者(watcher)
  2. 当监控的某个对象(ZNode)发生了变化(存储的数据修改,子节点目录的变化),则触发watcher事件,通知给设置watcher的客户端
  3. wtcher是一次性的触发之后立即被销毁,客户端连接断开的情况下触发的watcher会丢失
  4. zk保证,在客户端看到watcher时间之前是不会看到节点数据变化的
  5. 父节点,子节点增删改都能触发其watcher
  6. 针对不同类型的操作,触发的watcher事件也不同

创建watcher的命令

get /path [watch]

stat /path [watch]

//为子节点创建watcher,该命令为/path下的子节点的监听事件

ls /path [watch]

父节点Watcher事件类型:

  1. 创建父节点触发: NodeCreated
  2. 修改父节点数据触发: NodeDataChanged
  3. 删除父节点触发: NodeDeleted

子节点Watcher事件类型:

  1. 使用ls命令为父节点设置watcher,子节点被创建时触发:NodeChildrenChanged
  2. 使用ls命令为父节点设置watcher,子节点被删除时触发:NodeChildrenChanged
  3. 使用ls命令为父节点设置watcher,子节点被修改时,不触发事件

你可能感兴趣的:(Zookeeper Watcher机制)