本章讲ZooKeeper重要的机制,Watcher特性。ZooKeeper允许客户端向服务端注册Watcher监听,当服务端一些指定事件触发了这个Watcher,那么就会向指定客户端发送一个事件通知客户端执行回调逻辑
一.Watcher机制
ZooKeeper允许客户端向服务端注册感兴趣的Watcher监听,当服务端触发了这个Watcher,那么就会向客户端发送一个时间来实现分布式的通知功能。真正的Watcher回调与业务逻辑执行都在客户端
那么需要注意一下,给客户端的通知里只会告诉你通知状态(KeeperState),事件类型(EventType)和路径(Path)。不会告诉你原始数据和更新过后的数据!
Watcher机制包括三部分:注册、存储、通知
注册:注册Watcher
存储:讲Watcher对象存在客户端的WatcherManager中
通知:服务端触发Watcher事件,通知客户端,客户端从WatcherManager中取出对应的Watcher对象执行回调
那么接下来,我们就分这3步来分析:
注册我们可以通过以下方式向服务端注册Watcher,主要是构造参数、getData、getChildren和exists方法:
public ZooKeeper(String connectString, int sessionTimeout, Watcher watcher) public byte[] getData(String path, Watcher watcher, Stat stat) public List<String> getChildren(String path, Watcher watcher) public Stat exists(String path, Watcher watcher)