【面试普通人VS高手系列】Zookeeper中的Watch机制的原理?

一个工作了7年的粉丝,遇到了一个Zookeeper的问题。

因为接触过Zookeeper这个技术,不知道该怎么回答。

我说一个工作了7年的程序员,没有接触过主流技术,这不正常。

于是我问了他工资以后,我理解了!

好吧,关于“Zookeeper中Watch机制的实现原理”,看看普通人和高手的回答。

需要高手面试文档(附赠阿里内部十万字面试文档)或者有不懂的技术面试题想咨询的小伙伴可以扫描下方二维码

普通人:

嗯。。。。。。。。。。

高手:

好的,这个问题我打算从两个方面来回答。

Zookeeper是一个分布式协调组件,为分布式架构下的多个应用组件提供了顺序访问控制能力。

它的数据存储采用了类似于文件系统的树形结构,以节点的方式来管理存储在Zookeeper上的数据。

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

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

Watch的具体流程分为几个部分:

  • 首先,是客户端通过指定命令比如existsget,对特定路径增加watch

  • 然后服务端收到请求以后,用HashMap保存这个客户端会话以及对应关注的节点路径,同时客户端也会使用HashMap

    存储指定节点和事件回调函数的对应关系。

  • 当服务端指定被watch的节点发生变化后,就会找到这个节点对应的会话,把变化的事件和节点信息发给这个客户端。

  • 客户端收到请求以后,从ZkWatcherManager里面对应的回调方法进行调用,完成事件变更的通知。

以上就是我对这个问题的理解!

总结

这个面试题呢,我认为考察的价值也很大,其实对于服务端的数据变更通知,

无非就是pull和push两种方案,而这道题里面涉及到的技术点就是push的实现。

在业务开发里面,也可能会涉及到类似的场景,比如消息通知,扫码登录等。

如果你了解这些思想,那在解决这类问题的时候,会变得更加从容。

本期的普通人VS高手面试系列就到这里结束了。

需要高手面试文档(附赠阿里内部十万字面试文档)或者有不懂的技术面试题想咨询的小伙伴可以扫描下方二维码

↓↓↓↓↓↓↓↓↓↓↓↓↓↓

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

跟着Mic学架构

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

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

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

打赏作者

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

抵扣说明:

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

余额充值