ZK的watch机制实现原理

供稿:hz-xin.com     日期:2025-01-17

ZK的watch机制实现原理。

ZK的watch机制实现原理

我带来的是ZK的watch机制实现原理的相关话题,接下来我就来介绍。

newZooKeeper(StringconnectString,intsessionTimeout,Watcherwatcher)这个Watcher将作为整个ZooKeeper会话期间的上下文,一直被保存在客户端ZKWatchManager的defaultWatcher

也可以动态添加watcher:getData(),exists,getChildren。

分布式环境下的观察者模式:通过客服端和服务端分别创建有观察者的信息列表。

客户端调用相应接口时,首先将对应的Watch事件放到本地的ZKWatchManager中进行管理。

服务端在接收到客户端的请求后根据请求类型判断是否含有Watch事件,并将对应事件放到WatchManager中进行管理。

在事件触发的时候服务端通过节点的路径信息查询相应的Watch事件通知给客户端,客户端在接收到通知后,首先查询本地的ZKWatchManager获得对应的Watch信息处理回调操作。

这种设计不但实现了一个分布式环境下的观察者模式,而且通过将客户端和服务端各自处理Watch事件所需要的额外信息分别保存在两端,减少彼此通信的内容,大大提升了服务的处理性能

客户端实现过程标记该会话是一个带有Watch事件的请求通过DataWatchRegistration类来保存watcher事件和节点的对应关系客户端向服务器发送请求,将请求封装成一个Packet对象,并添加到一个等待发送队列outgoingQueue中调用负责处理队列outgoingQueue的SendThread线程类中的readResponse方法接收服务端的回调,并在最后执行finishPacket()方法将Watch注册到ZKWatchManager,sendThread通过发送path路径和watcher为true,到server注册watch事件

ZKWatchManager保存了Map dataWatchers、Map existsWatchers、Map childrenWatchers三个集合,客户端会在dataWatchers中会添加一个key为path路径的本地事件

服务端实现过程解析收到的请求是否带有Watch注册事件,通过FinalRequestProcessor类中的processRequest函数实现的。当getDataRequest.getWatch()值为True时,表明该请求需要进行Watch监控注册。将对应的Watch事件存储到WatchManager,通过zks.getZKDatabase().getData函数实现, WatchManger该类中有HashMap watchTable,key为path,Watcher是一个客户端网络连接封装,当节点变化时会通知对应的连接(连接通过心跳保持)服务端触发过程调用WatchManager中的方法触发数据变更事件封装了一个具有会话状态、事件类型、数据节点3种属性的WatchedEvent对象。之后查询该节点注册的Watch事件,如果为空说明该节点没有注册过Watch事件。如果存在Watch事件则添加到定义的Wathcers集合中,并在WatchManager管理中删除。最后,通过调用process方法向客户端发送通知

ZK的watch机制实现原理。

ZK的watch机制实现原理

客户端回调过程使用SendThread.readResponse()方法来统一处理服务端的相应将收到的字节流反序列化转换成WatcherEvent对象。调用eventThread.queueEvent()方法将接收到的事件交给EventThread线程进行处理从ZKWatchManager中查询注册过的客户端Watch信息。查询到后,会将其从ZKWatchManager的管理中删除。因此客户端的Watcher机制是一次性的,触发后就会被删除将查询到的Watcher存储到waitingEvents队列中,调用EventThread类中的run方法循环取出在waitingEvents队列中等待的Watcher事件进行处理

本文分享的ZK的watch机制实现原理的具体介绍,我希望给网友们带来一些知识。



这些进程哪些可以删除吗?
你既然使用的金山,就应该有金山清理专家啊,打开这个,点安全百宝箱->进程管理器,那里面会有详细介绍,对号入座,kmailmon.exe 金山毒霸的邮件监视程序。该程序具有双重过滤机制,可以双向拦截邮件病毒,高效过滤垃圾邮件,让您放心收发电子邮件,远离邮件病毒的侵扰。kwatch.exe 这是金山毒霸的实时监控服务程序...

K-Means 聚类原理
重新判断点的归属,寻找中心……判断归属……对于热图相关数据,也可以通过欧式距离来判断样本的聚类 https:\/\/blog.csdn.net\/huangfei711\/article\/details\/78480078 https:\/\/www.biaodianfu.com\/k-means-choose-k.html https:\/\/www.youtube.com\/watch?v=4b5d3muPQmA&feature=youtu.be ...

计算机系统中的kwatch.exe是什么呢?
KWatch.exe是金山监控程序,对电脑的正常使用不会造成什么影响 参考资料:By Grasse!个人见解!没有抄袭!希望可以帮助你!

Kwatch.EXE什么进程?
请问你是不是安装了金山毒霸,?如果是那就正常.我曾经也问过这个问题.没有解决的办法.除非你不用金山毒霸这个杀毒了 要是没安装的话.就是病毒冒充了这个Kwatch.EXE 回答完毕-.-

电子手表chr什么意思(电子表chg是什么意思)
手表的分类包括机械表、电子表、晶体管摆轮表、石英表和光波表,每种类型的计时原理和构造都有所不同。机械表和电子表的工作原理各有特点,机械表利用摆轮和发条产生稳定的振动,电子表则通过电能和磁能的转换实现计时功能。石英表采用石英晶体振荡器,走时精度极高。光波表则通过接收电波信号自动校正时间...

手表手机那个好用吗(什么手机手表好用)
在智能手表与手机手表的选择上,两者在实现原理上大同小异。智能手表通常配备有主控芯片,可以实现大部分手机的功能。而手机手表则在智能手表的基础上增加了电话卡,增加了接打电话的功能。两者都使用三轴加速度传感器来追踪步数,通过软件算法实现计步功能。智能手表的硬件差距主要体现在传感器的质量和型号上...

红米watch3双击点亮屏幕反应慢
屏幕触控失灵。红米watch3的屏幕功能是屏幕触控操纵实现的,因此红米watch3双击点亮屏幕反应慢是因为屏幕触控失灵导致的。红米watch3是红米K60系列新品发布会上推出的新款智能手表。

开机后kwatch.exe占用大量CPU,机子运行不流畅,望高手能帮忙解决。_百度...
关闭kwatch后,进程services就占用大量CPU,机子几乎动不了了。我的系统是XP的,安毒霸后几十天均未出现这样的问题,回答尽可能短小,谢谢。... 关闭kwatch后,进程services就占用大量CPU,机子几乎动不了了。我的系统是XP的,安毒霸后几十天均未出现这样的问题,回答尽可能短小,谢谢。 展开  我来答 3个回答 ...

"KWatch.EXE"尝试获取"ARP防火墙"的进程终止权限,已被拦截!(进程ID:1...
KWatch.EXE是金山毒霸的实时监控程序~应该没什么问题~~有可能是arp.exe遭到攻击了 可以下一个TSC看看到底是不是中了ARP病毒 http:\/\/www.pc106.com\/xz\/aqxg\/bdfz\/200704\/2560.html 另外360安全卫士也有ARP防火墙~~如果没中的话就装那个吧 中了的话比较麻烦~~实在杀不掉就只能拔了网线重装系统再...

...GPS 模组、加入超解像模式, Ricoh Pentax-K3 II 正式发表
图片来源: DC.Watch Ricoh Image 在今日宣布 Pentax K-3 后继机种 Pentax K-3 II 正式发表,机身设计基本承袭 K-3 结构,可共用 K-3 垂直把手 D-BG5 ,电池也同样使用 D-LI90P ,不过取消了机顶闪灯设计。新闻来源: DC.Watch K-3 II 具备与 K-3 相同的 100% 视野率观景窗,感光...