本文基于 Apache ZooKeeper Release 3.7.0 版本书写
作于 2022年5月15日 17:22:11 转载请声明
演示前的ZooKeeper目录状态,只有zookeeper默认目录:
在客户端直接输入 --help
命令,可以看到以下文字:
可以看到 addWatch
命令,可以直接使用该命令添加 Watcher
。
也可以通过带有 -w
选项的命令,添加 Watcher
。
Watcher
可以分为两类:目录创建/删除类Watcher
、数据修改类Watcher
。
1、目录创建/删除类Watcher
核心命令:
shell
ls -w /dir_name
或者
addWatch /dir_name
1.1、效果演示:本目录被创建
客户端1:执行命令添加 Watcher:
shell
addWatch /mydir
在客户端2添加目录:
shell
create /mydir
客户端1可以看到 Watcher 效果:
1.2、效果演示:本目录被删除
客户端1:执行命令添加 Watcher:
shell
ls -w /mydir
或者
addWatch /mydir
在客户端2删除目录:
shell
delete /mydir
客户端1可以看到 Watcher 效果:
1.3、效果演示:此目录下有子目录被创建
新开客户端1,先创建一个目录
shell
create /mydir
在客户端1,为此目录设置Watcher:
shell
ls -w /mydir
或者
addWatch /mydir
在客户端2,创建此目录的子目录:
shell
create /mydir/subdir
客户端1,成功看到 Watcher 效果:
2、数据修改类Watcher:get命令
核心命令:
shell
get -w /dir_name
或者
addWatch /mydir
2.1、效果演示
客户端1添加 Watcher:
shell
get -w /mydir
客户端2执行数据修改命令:
shell
set /mydir mydata
客户端1可以看到 Watcher 效果:
3、删除Watcher
命令:
shell
removewatches /dir_name
如果此目录之前有watcher,那么执行该命令的过程中,同样会触发 Watcher: