【面试官】知道ZooKeeper有什么应用场景吗
- 面试官:知道ZooKeeper有什么应用场景吗?
- 面试官:你挑一个你比较熟悉的场景讲讲?
- 面试官:你说的是排他锁,共享锁呢?
- 面试官:emmmm有没听说过共享锁的羊群效应?
- 面试官:那怎么解决呢?
- 面试官:Kafka应用场景呢,知道Kafka是怎么利用ZooKeeper吗?
- 面试官:你刚刚说到Kafka生产者负载均衡,那消费者负载均衡知道吗?
- 👉以【面试官面试】形式覆盖Java程序员所需掌握的Java核心知识、面试重点
- 📚本期是《ZooKeeper系列》,其他系列博客请订阅专栏《Java Offer训练营》
- ❤创作不易,不妨点赞、收藏、关注支持一下
文章目录
- ZooKeeper应用场景
- 分布式锁实现
- 共享锁
- 共享锁羊群效应
- 处理羊群效应
- Kafka应用场景
- 消费者负载均衡
1. ZooKeeper应用场景
面试官:知道ZooKeeper有什么应用场景吗?
主要有这几种。
-
数据发布/订阅。可以用来实现配置中心
-
命名服务。类似于UUID,可以生成全局唯一的ID
-
集群管理。每一个服务器是一个子节点,可以用来检测到集群中机器的上/下线情况
-
分布式锁
1.1 分布式锁实现
面试官:你挑一个你比较熟悉的场景讲讲?
好的面试官,那我讲下分布式锁。
是这样的,ZooKeep的获取锁时会在/exclusive_lock节点下创建子节点,如果创建成功则获得锁。如果失败,则客户端会在该节点注册一个子节点变更的Watcher监听。
同样,释放锁则删除该子节点,此时Watcher监听就会通知客户端可以重新获取了。
1.2 共享锁
面试官:你说的是排他锁,共享锁呢?
共享锁也是类似的场景。
每次读、写请求同样是创建子节点,是一个类似于“/shared_lock/[Hostname]-请求类型-序号”的临时顺序节点。
接着会获取子节点列表,同时注册Watcher监听。
- 获取读锁的话,如
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
Java Offer训练营 文章被收录于专栏
👉以贴近现实的【面试官面试】形式帮助你系统学习后端技术 👉成体系知识帮你在后端进阶,每一道问答助你怒怼大厂面试官,收获大厂offer 👉《Java Offer训练营》包含Redis系列、MySQL系列、Kafka系列、ZooKeeper系列、JVM系列、多线程系列等等 👉制作不易,各位的支持是我创作的最大动力