04_zookeeper的watcher机制

【watcher简述】

* zk针对每个节点的操作,都会有一个监督者:watcher

* 当监控的某个对象(znode)发生了变化,则出发watcher

* zk中的watcher是一次性的,出发后立即销毁

* 父节点,子节点增删改都能触发其watcher

* 针对不同类型的操作,触发的watcher事件也不同:

  1.节点/节点的子节点 创建事件

  2.节点/节点的子节点 删除事件

  3.节点/节点的子节点 节点数据变化事件

 

【设置watcher】

get path [watch]
stat path [watch]

父节点 增删改 触发watcher

子节点 增删改 触发watcher

【watcher事件】

【父节点事件类型】

[ 创建父节点触发:NodeCreated ]

WATCHER::

WatchedEvent state:SyncConnected type:NodeCreated path:/father
Created /father

========================================
/**
 * WatchedExent被触发
 * 事件类型:创建节点类型  NodeCreated
 * 路径:/father
 */

[ 修改父节点数据触发:NodeDataChanged ]

[ 删除父节点触发:NodeDeleted ]

 【子节点事件类型】

ls path [watch]

[示例1:ls设置创建子节点事件]

ls为父节点设置watcher,创建子节点会触发NodeChildrenChanged事件 

[ 示例2:ls设置删除子节点的操作 ]

ls为父节点设置watcher,删除子节点触发:NodeChildrenChanged

 [ 注意 ]

使用 ls 命令为父节点设置watcher,修改子节点的值不会触发事件。

如果希望修改子节点的值也触发事件,应该把字节点当成父节点,使用get path [watch]命令

get path [watch]

改成下边这种get方式即可

原文地址:https://www.cnblogs.com/HigginCui/p/9657985.html