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方式即可