Zookeeper 中的 Watch 机制的原理

Zookeeper

Zookeeper 是一个分布式协调组件,为分布式架构下的多个应用组件提供了顺序访问控制能力。(如图)它的数据存储采用了类似于文件系统的树形结构,以节点的方式来管理存储在Zookeeper 上的数据。

Watch 机制 

Zookeeper 提供了一个 Watch 机制,可以让客户端感知到 Zookeeper Server上存储的数据变化,这样一种机制可以让 Zookeeper 实现很多的场景,比如配置中心、注册中心等。

Watch 机制采用了 Push 的方式来实现,也就是说客户端和 Zookeeper Server 会建立一个长连接,一旦监听的指定节点发生了变化,就会通过这个长连接把变化的事件推送给客户端。

具体流程

Watch 的具体流程分为几个部分:
  1. 首先,是客户端通过指定命令比如 exists、get,对特定路径增加 watch
  2. 然后服务端收到请求以后,用 HashMap 保存这个客户端会话以及对应关注的节点路径,同时客户端也会使用 HashMap存储指定节点和事件回调函数的对应关系。
  3. 当服务端指定被 watch 的节点发生变化后,就会找到这个节点对应的会话,把变化的事件和节点信息发给这个客户端。
  4. 客户端收到请求以后,从 ZkWatcherManager 里面对应的回调方法进行调用,完成事件变更的通知。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值