ZK监听缺陷
早期版本的zk监听是使用的-w指令,但是这个指令是一次性的。也就是说该指令只能监听一次事件,后续如果要继续监听事件的话就需要再次使用该指令增加监听事务。两次监听之间必然会有时差,这就会导致会有某些事件未被捕捉到。
ZK永久监听
为了解决上述的问题,ZK在3.6.0版本以后添加了永久监听指令:
addWatch
,它能保证被触发之后仍然还有监听效果,可以继续监听Znode上的变更。
addWatch使用方式
指令格式:
addWatch [-m model] path
model有两种模式:
- PERSISTENT:持久化订阅,针对当前节点的修改和删除事件,以及当前节点子节点的删除和新增事件;
- PERSISTENT_RECURSIVE:持久化递归订阅,在PERSISTENT的基础上,增加了子节点修改事件的触发,以及子节点的子节点的数据变化都会触发相关事件(满足递归订阅特性)