事件监听机制命令
添加 -w 参数可实时监听节点与子节点的变化,并且实时收到通知。非常适用保障分布式情况下的数据一至性。
其使用方式如下
命令 | 描述 |
ls -w path | 监听子节点的变化(增,删) [监听目录] |
get -w path | 听节点数据的变化 |
stat -w path | 监听节点属性的变化 |
printwatches on | off |
针对节点的监听:一旦事件触发,对应的注册立刻被移除,所以事件监听是一次性的 . 依靠的客户端和服务端建立的长连接实现的实时推送。
Zookeeper事件类型
- None: 连接建立事件
- NodeCreated: 节点创建
- NodeDeleted: 节点删除
- NodeDataChanged:节点数据变化
- NodeChildrenChanged:子节点列表变化
- DataWatchRemoved:节点监听被移除
- ChildWatchRemoved:子节点监听被移除
实操 -w
get -w /path 监听节点数据的变化
【会话一】
然后新开启一个会话,去修改这个节点
【会话二】
重新回到【会话一】
观察节点属性的变化
ls -w /path 监听子节点的变化(增,删) [监听目录]
【会话一】
【会话二】
切到【会话一】 观察输出的监听日志
当然了 delete 目录,也会发生变化
如果对节点数据内容,ls -w 是收不到通知的,只能通过 get -w来实现 。
这里,监听一点触发,就失效了,切记。
ls -w /path 例子二 循环递归的监听
如果监听了某个目录,那么该目录下的子目录的变更也会被监听到。 当然了 也是一次性的。
stat -w path 监听节点属性的变化