Zookeeper 的通知机制

Zookeeper 允许客户端向服务端的某个 znode 注册一个 Watcher 监听,当服务端的一些指定事件触发了这个 Watcher ,服务端会向指定客户端发送一个事件通知来实现分布式的通知功能,然后客户端根据 Watcher 通知状态和事件类型做出业务上的改变。

大致分为三个步骤:

1:客户端注册 Watcher

  • 调用 getData、getChildren、exist 三个 API ,传入Watcher 对象。
  • 标记请求request ,封装 Watcher 到 WatchRegistration 。
  • 封装成 Packet 对象,发服务端发送request 。
  • 收到服务端响应后,将 Watcher 注册到 ZKWatcherManager 中进行管理。
  • 请求返回,完成注册。

2:服务端处理 Watcher

  • 服务端接收 Watcher 并存储。
  • Watcher 触发
  • 调用 process 方法来触发 Watcher 。

3:客户端回调 Watcher

  • 客户端 SendThread 线程接收事件通知,交由 EventThread 线程回调Watcher 。
  • 客户端的 Watcher 机制同样是一次性的,一旦被触发后,该 Watcher 就失效了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员JavaWind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值