0 GitHub
1 面试题
ZooKeeper 的适用场景?
2 考点分析
现在聊的面试主题, 是分布式系统, 其实跟你聊完 Dubbo 以及相关的一些问题, 确认你现在分布式服务框架, RPC 框架, 基本都有一些认知.
下面, 可能开始要跟你聊分布式相关的其他问题了.
分布式锁这个东西, 还是很常用的, 做 Java 开发, 分布式系统, 可能会有一些场景会用到.
最常用的分布式锁就是 ZooKeeper 来实现.
这个问题, 一般就是看看你是否了解 ZK, 因为 ZK 是分布式系统中的一个基础系统.
问的话常问的就是说 ZK 的使用场景是什么? 看你知道不知道一些基本的使用场景.
但是其实 ZK 挖深了自然也是可以很深很深!
3 ZooKeeper 的适用场景
3.1 分布式协调
这是 ZK 很经典的一个用法
ZooKeeper 的分布式协调场景图
image
如上图所示, 系统 A 发送一个请求到 MQ, 然后系统 B 消费消息之后处理了. 那系统 A 如何知道系统 B 的处理结果?
用 ZK 就可实现分布式系统之间的协调工作!
系统 A 发送请求之后可以在 ZK 上对某个节点的值注册监听器, 一旦系统 B 处理完了就修改 ZK 那个节点的值, A 立马就可以收到通知, 完美解决~
3.2 分布式锁
ZooKeeper 的分布式锁场景图
image
对某一个数据连续发出两个修改操作, 两台机器同时收到了请求, 但只能一台机器先执行另外一个后执行.
那么此时就可以使用 ZK 分布式锁:
一个机器接收到了请求之后先获取 ZK 上的锁, 即可以去创建一个 znode, 接着执行操作
然后另外一个机器也尝试去创建那个 znode, 结果发现自己创建不了, 因为被别人创建了, 那只能等着, 等第一个机器执行完了自己再执行
3.3 元数据 / 配置信息管理
ZooKeeper 的元数据 / 配置管理场景
image
ZK 可以用作很多系统的配置信息的管理, 比如 Kafka,Storm 等等很多分布式系统都会用 ZK 来做一些元数据, 配置信息的管理, 包括 Dubbo 注册中心
3.4 HA 高可用性
ZooKeeper 的 HA 高可用性场景
image
这个应该是很常见的, 比如 hadoop,hdfs,yarn 等很多大数据系统, 都选择基于 ZK 来开发 HA 高可用机制, 就是一个重要进程一般会做主备两个, 主进程挂了立马通过 ZK 感知到切换到备用进程
参考
《Java 工程师面试突击第 1 季 - 中华石杉老师》
来源: http://www.jianshu.com/p/f565f7850ccd