博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZooKeeper Watcher
阅读量:5836 次
发布时间:2019-06-18

本文共 910 字,大约阅读时间需要 3 分钟。

ZooKeeper 提供了分布式数据发布/订阅功能,一个典型的发布/订阅模型系

统定义了一种一对多的订阅关系,能让多个订阅者同时监听某一个主题对象,当这个主题对象自身状态变化时,会通知所有订阅者,使他们能够做出相应的处理。
ZooKeeper 中, 引入了 Watcher 机制来实现这种分布式的通知功能。
ZooKeeper 允许客户端向服务端注册一个 Watcher 监听,当服务端的一些事件触发了这个 Watcher,那么就会向指定客户端发送一个事件通知来实现分布式的通知功能。
触发事件种类很多,如:节点创建,节点删除,节点改变,子节点改变等。总的来说可以概括 Watcher 为以下三个过程:客户端向服务端注册 Watcher、
服务端事件发生触发 Watcher、客户端回调 Watcher 得到触发事件情况
4.1 . Watch 机制特点
一次性触发
事件发生触发监听,一个 watcher event 就会被发送到设置监听的客户端, 这种效果是一次性的,后续再次发生同样的事件,不会再次触发。
事件封装
ZooKeeper 使用 WatchedEvent 对象来封装服务端事件并传递。
WatchedEvent 包含了每一个事件的三个基本属性:
通知状态(keeperState),事件类型(EventType)和节点路径(path) event 异步发送
watcher 的通知事件从服务端发送到客户端是异步的。先注册再触发
Zookeeper 中的 watch 机制,必须客户端先去服务端注册监听,这样事件发送才会触发监听,通知给客户端。

4.2 . 通知状态和事件类型

同一个事件类型在不同的通知状态中代表的含义有所不同,下表列举了常见的通知状态和事件类型。

ZooKeeper Watcher

其中连接状态事件(type=None, path=null)不需要客户端注册,客户端只要有需要直接处理就行了。

4.3 . Shell 客户端设置 watcher

设置节点数据变动监听:
ZooKeeper Watcher
通过另一个客户端更改节点数据:
ZooKeeper Watcher
此时设置监听的节点收到通知:
ZooKeeper Watcher

转载于:https://blog.51cto.com/13587708/2301556

你可能感兴趣的文章
html5纲要,细谈HTML 5新增的元素
查看>>
Android应用集成支付宝接口的简化
查看>>
[分享]Ubuntu12.04安装基础教程(图文)
查看>>
django 目录结构修改
查看>>
win8 关闭防火墙
查看>>
CSS——(2)与标准流盒模型
查看>>
C#中的Marshal
查看>>
linux命令:ls
查看>>
Using RequireJS in AngularJS Applications
查看>>
【SAP HANA】关于SAP HANA中带层次结构的计算视图Cacultation View创建、激活状况下在系统中生成对象的研究...
查看>>
CentOS 7 装vim遇到的问题和解决方法
查看>>
【ros】Create a ROS package:package dependencies报错
查看>>
通过容器编排和服务网格来改进Java微服务的可测性
查看>>
Linux基础命令---rmdir
查看>>
Squid 反向代理服务器配置
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>
Android自学--一篇文章基本掌握所有的常用View组件
查看>>
灰度图像和彩色图像
查看>>
argparse - 命令行选项与参数解析(转)
查看>>