【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:

相关推荐
❀͜͡傀儡师9 小时前
Spring AI 集成 TypeSafe:用判断模型处理工单分流与链路决策
java·人工智能·spring
bro_Java6669 小时前
《栈与队列:数据结构的“双生花”》
java·数据结构·编辑器
花开路口9 小时前
线程安全完全指南:从 Java 到 Kotlin,一文吃透并发编程
java·kotlin
她说..9 小时前
IntelliJ IDEA 快捷键速查表(Mac 版)
java·macos·intellij-idea
EatFan9 小时前
JunoYi 框架实践:Spring Boot 项目为什么拆成 framework、module、server 三层?
java·spring boot·后端·framework·module·模块化·junoyi
汉堡大王95279 小时前
一张图三句需求,我用 Trae Work 做了一块能看日出日落和月相的天文机械表
前端·后端·github
mudtools9 小时前
在.NET现有系统中快速集成飞书任务分配能力
后端·c#·.net
Wang's Blog9 小时前
Java 项目实战: 外卖平台优化-从库Slave配置与主从复制验证
java·开发语言
知守观9 小时前
ThreadLocal + 异步线程导致用户数据串号:一次跨请求数据泄漏的完整复盘
后端
前端冒菜师9 小时前
我为什么做了 Iris,又为什么停下了它
后端·ai编程