Zookeeper Watcher相关源码
一、使用原生zk包实现watcher机制
二、实现循环watcher机制
三、单实例模式下源码阅读
个人翻译的Zookeeper源码地址:<https://gitee.com/kylin1991_admin/zookeeper/tree/branch-3.4.14/
有兴趣的可以去过一遍。挺有意思的
1、Wathcher的基本流程
入口:Zookeeper构造方法
2、服务端接受请求处理流程
入口:NIOServerCnxn#processPacket
3、客户端接收服务端处理完成的相应
入口:ClientCnxnSocketNIO#doIO
4、事件触发
服务端的事件响应:DataTree#setData
客户端处理事件响应:SendThread#readResponse
5、服务端接受数据请求
入口:NIOServerCnxnFactory#run
四、集群模式下的Watcher处理流程
集群模式下涉及到 zab 协议,所以处理流程比较复杂,下面是借用的网图