zookeeper3.4.x监听通知机制 作者:马育民 • 2021-11-18 15:36 • 阅读:10085 # 介绍 客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,zookeeper会通知该客户端。 # 监听节点变化 监听 创建、删除 子节点、子节点事件 修改节点数据,不会监听到 ### 启动第1个客户端 执行下面命令: ``` ls /services watch ``` ### 启动第2个客户端 执行下面命令: ``` create /services/notice http://192.168.1.103:8080 ``` 只有 创建、删除子节点时,才会向 第1个客户端 发通知 ### 观察第1个客户端 显示如下: ``` WATCHER:: WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/services ``` 接收到 `NodeChildrenChanged` 子节点改变事件 **注意:**哪个客户端执行了监听,当节点改变时,该客户端才能接收到通知 # 监听节点数据改变 了解 [zookeeper监听通知机制](https://www.malaoshi.top/show_1IXKSKpP4je.html "zookeeper监听通知机制") 监听修改节点数据事件 ### 启动第1个客户端 执行下面命令 ``` get /services/notice watch ``` `watch` 参数表示监听 `/services/notice` 节点的变化,一有改动(数据改变、被删除、子目录节点增加删除),zookeeper就会通知该客户端 ### 启动第2个客户端 执行下面命令: ``` set /services/notice http://192.168.1.200:8080 ``` 修改 `/services/notice`节点的数据为 `http://192.168.1.200:8080` ### 观察第1个客户端 第1个客户端显示如下: ``` WATCHER:: WatchedEvent state:SyncConnected type:NodeDataChanged path:/services/notice ``` 接收到 `NodeDataChanged` 节点数据改变事件 ### 在第2个客户端再次修改 执行下面命令: ``` set /services/notice http://192.168.1.201:8080 ``` ### 观察第1个客户端 第1个客户端 **不会接收到通知**,需要 **再次执行监听命令** 原文出处:http://malaoshi.top/show_1IX2FYH3uZXc.html