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

  • 面试官:知道ZooKeeper有什么应用场景吗?
  • 面试官:你挑一个你比较熟悉的场景讲讲?
  • 面试官:你说的是排他锁,共享锁呢?
  • 面试官:emmmm有没听说过共享锁的羊群效应?
  • 面试官:那怎么解决呢?
  • 面试官:Kafka应用场景呢,知道Kafka是怎么利用ZooKeeper吗?
  • 面试官:你刚刚说到Kafka生产者负载均衡,那消费者负载均衡知道吗?

大家好,我是南哥。

一个Java学习与进阶的领路人,跟着南哥我们一起Java成长。

文章目录

  1. ZooKeeper应用场景
    1. 分布式锁实现
    2. 共享锁
    3. 共享锁羊群效应
    4. 处理羊群效应
  2. Kafka应用场景
    1. 消费者负载均衡

1. ZooKeeper应用场景

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

主要有这几种。

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

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

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

  4. 分布式锁

1.1 分布式锁实现

面试官:你挑一个你比较熟悉的场景讲讲?

好的面试官,那我讲下分布式锁。

是这样的,ZooKeep的获取锁时会在/exclusive_lock节点下创建子节点,如果创建成功则获得锁。如果失败,则客户端会在该节点注册一个子节点变更的Watcher监听

同样,释放锁则删除该子节点,此时Watcher监听就会通知客户端可以重新获取了。

1.2 共享锁

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

共享锁也是类似的场景。

每次读、写请求同样是创建子节点,是一个类似于“/shared_lock/[Hostname]-请求类型-序号”的临时顺序节点。

接着会获取子节点列表,同时注册Watcher监听

  1. 获取读锁的话,如果前面比自己小的序号没有写请求,则可以读
  2. 获取写锁的话,只有在自己是的情况下

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

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

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

全部评论
支持大佬
点赞 回复 分享
发布于 2024-04-16 21:04 广东

相关推荐

01-17 12:35
吉首大学 Java
秋招之BrianGriffin:自己的工作自己做!😡
点赞 评论 收藏
分享
评论
5
11
分享

创作者周榜

更多
牛客网
牛客企业服务