Watcher
Zookeeper使用Watcher机制实现分布式数据的发布、订阅功能。
一个典型的发布、订阅模型系统定义了一种一对多订阅关系,能够让多个订阅者同时监听某一个主题对象,当这个主题对象自身状态变化时,会通知所有订阅者,使订阅者能够做相应的处理。
在Zookeeper中引入Watcher机制来实现这种分布式的通知功能,Zookeeper允许客户端向服务端注册一个Wather监听,当服务端一一些指定事件触发了这具Wather,就会向指定客户端发送一个事件通知来实现分布式的通知功能。
Wather机制主要包括 客户端线程,客户端WatcherManager,Zookeeper服务器三部分。
工作流程:
客户端在向Zookeeper服务器注册的同时,会将Wather对象存储在客户端的WatcherManger中。当Zookeeper服务端触发Wather事件后,向客户端发送通知,客户端线程从WatcherManger中取出对应的Wather对象来执行回调逻辑。