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

  • 面试官:知道ZooKeeper有什么应用场景吗?
  • 面试官:你挑一个你比较熟悉的场景讲讲?
  • 面试官:你说的是排他锁,共享锁呢?
  • 面试官:emmmm有没听说过共享锁的羊群效应?
  • 面试官:那怎么解决呢?
  • 面试官:Kafka应用场景呢,知道Kafka是怎么利用ZooKeeper吗?
  • 面试官:你刚刚说到Kafka生产者负载均衡,那消费者负载均衡知道吗?
  • 👉以【面试官面试】形式覆盖Java程序员所需掌握的Java核心知识、面试重点
  • 📚本期是《ZooKeeper系列》,其他系列博客请订阅专栏《Java Offer训练营》
  • ❤创作不易,不妨点赞、收藏、关注支持一下

文章目录

  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. 获取读锁的话,如

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

Java Offer训练营 文章被收录于专栏

👉以贴近现实的【面试官面试】形式帮助你系统学习后端技术 👉成体系知识帮你在后端进阶,每一道问答助你怒怼大厂面试官,收获大厂offer 👉《Java Offer训练营》包含Redis系列、MySQL系列、Kafka系列、ZooKeeper系列、JVM系列、多线程系列等等 👉制作不易,各位的支持是我创作的最大动力

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

相关推荐

4 9 评论
分享
牛客网
牛客企业服务