【ZooKeeper3、Watcher机制

本文基于 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:

相关推荐
七灵微21 分钟前
【后端】Flask
后端·python·flask
SomeB1oody23 分钟前
【Rust自学】17.2. 使用trait对象来存储不同值的类型
开发语言·后端·rust
gentle_ice44 分钟前
leetcode——排序链表(java)
java·leetcode·链表
CHANG_THE_WORLD1 小时前
C++并发编程指南07
java·jvm·c++
gopher_looklook1 小时前
从零到一: 用Go语言搭建简易RPC框架并实践 (一)
后端·go
RainbowSea1 小时前
六. Redis当中的“发布” 和 “订阅” 的详细讲解说明(图文并茂)
java·redis·nosql
Stanford_11061 小时前
C++中常用的排序方法之——冒泡排序
java·学习·算法·微信小程序·排序算法·微信公众平台·微信开放平台
指尖动听知识库1 小时前
嵌入式经典面试题之操作系统(一)
java·linux·服务器
是小崔啊1 小时前
Spring04 - filter和interceptor
java·spring·框架·源码
荆州克莱2 小时前
mysql重学(一)mysql语句执行流程
spring boot·spring·spring cloud·css3·技术