【面试官】知道Zookeeper有什么应用场景吗?

  • 面试官:知道Zookeeper有什么应用场景吗?
  • 面试官:你说的是排他锁,共享锁呢?
  • 面试官:有没听说过共享锁的羊群效应?
  • 面试官:那怎么解决?
  • 面试官:Kafka应用场景呢,知道Kafka是怎么利用Zookeeper吗?

大家好,我是南哥。

一个Java学习与进阶的领路人,相信对你通关面试进入心心念念的公司有所帮助。

文章目录

  1. ZooKeeper分布式锁
    1. 排他锁实现分布式锁
    2. 共享锁实现分布式锁
    3. 共享锁羊群效应
    4. 处理羊群效应
  2. Kafka应用场景
    1. Kafka应用场景

1. ZooKeeper分布式锁

1.1 排他锁实现分布式锁

面试官:知道Zookeeper有什么应用场景吗?

目前地球村里大型公司部署的分布式技术,绝大部分都是由Zookeeper提供底层的技术支持,所以Zookeeper多么重要就不用我多说了吧。

我们可以利用Zookeeper来完成分布式系统涉及的各种核心功能,例如以下4种:

  1. 数据发布/订阅。可以用来实现配置中心。

  2. 命名服务。类似于UUID,可以生成全局唯一的ID。

  3. 集群管理。每一个服务器是一个子节点,可以用来检测到集群中机器的上/下线情况。

  4. 分布式锁。

南哥先讲下我们可以怎么利用Zookeeper来实现分布式锁,要实现分布式锁,分为获取锁和释放锁两个步骤。

ZooKeepr获取锁时会在/exclusive_lock节点下创建子节点,如果创建成功则获得锁。如果创建失败,则访问Zookeeper的客户端会在该节点注册一个Watcher监听,用来实时监控子节点的变更从而重新获得锁,这有点类似于线程的循环等待。

当要释放锁时,Zookeeper会删除该子节点,此时/exclusive_lock节点下就有空位了。Watcher监听则通知客户端可以重新创建子节点来获得锁资源。

1.2 共享锁实现分布式锁

面试官:你说的是排他锁,共享锁呢?

大家有没发现,上面分布式锁的实现方式是排他锁,我们也可以使用共享锁的实现方式,来看看两者的区别。

排他锁,又称为写锁或独占锁,是一种基本的锁类型。如果事务T1对数据对象O1加上了排他锁,那么在整个加锁期间,只允许事务T1对O1进行读取和更新操作,其他任何事务都不能再对这个数据对象进行任何类型的操作——直到T1释放了排他锁。

共享锁,又称为读锁,同样是一种基本的锁类型。如果事务T1对数据对象O1加上了共享锁,那么当前事务只能对O1进行读取操作,其他事务也只

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

Java面试突击 文章被收录于专栏

👉以面试官面试的形式,涵盖了你怒怼大厂面试官、拿下大厂面试所需掌握的核心知识、面试重点! 👉相信一定对你顺利通关面试、拿到理想Offer有所帮助! 👉花费大量精力去制作本专栏,创作不易,各位的支持就是我创作的最大动力!

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 17:28
25届每天都在焦虑找工作的事情0offer情绪一直很低落硬撑着面了一个岗位岗位有应酬的成分面试的时候hr给我出各种场景题问的问题比较犀利 有点压力面的感觉感觉有点回答不上来本来就压抑的情绪瞬间爆发了呢一瞬间特别想哭觉得自己特别没用没绷住掉眼泪了事后想想觉得自己挺有病的 真的破大防了
喜欢唱跳rap小刺猬...:我觉得没关系吧,之前有一次面试leader给我压力面,我顶住了压力,结果入职的时候发现组里氛围很差,果断跑路。其实从面试就能大概看出组的情况,面试体验好的组倒是不一定好,但是面试体验不好的组。。。就很难说
面试尴尬现场
点赞 评论 收藏
分享
废物一个0offer:认真的吗二本本科找人工智能岗位
点赞 评论 收藏
分享
06-28 22:48
已编辑
广东金融学院 Java
小浪_Coding:学院本+这俩项目不是buff叠满了嘛
点赞 评论 收藏
分享
评论
2
6
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务