本篇整理了 2021 年常见的 ZooKeeper 面试题并提供详细解答,帮助准备面试的同学更好地理解和掌握 ZooKeeper 相关知识。

1. ZooKeeper 是什么?

ZooKeeper 是一个分布式协调服务,用于维护配置信息、命名服务、提供分布式同步和组服务等。

2. ZooKeeper 的特点有哪些?

  • 顺序一致性: 从同一个客户端发起的事务请求,最终将会严格按照其发送顺序被应用到 ZooKeeper 中。
  • 原子性: 对数据的更新操作要么成功,要么失败,不存在中间状态。
  • 单一视图: 无论客户端连接到哪个 ZooKeeper 服务器,看到的服务端数据都是一致的。
  • 可靠性: 一旦数据被写入,除非被覆盖,否则数据将会一直保存在 ZooKeeper 中。
  • 实时性: 客户端在一定时间范围内能够读取到最新的数据状态。

3. ZooKeeper 的数据模型是什么样的?

ZooKeeper 的数据模型类似于文件系统,以树状结构存储数据,每个节点被称为 ZNode。

4. ZooKeeper 的应用场景有哪些?

  • 配置中心: 存储和管理应用的配置信息。
  • 命名服务: 为分布式系统提供统一的命名服务。
  • 分布式锁: 实现分布式环境下的互斥访问。
  • 集群管理: 监控集群中节点的状态,实现故障自动转移。

5. ZooKeeper 的 Watcher 机制是什么?

Watcher 机制允许客户端向 ZooKeeper 注册监听特定 ZNode 的事件,当 ZNode 发生变化时,ZooKeeper 会通知客户端。

6. ZooKeeper 的选举机制是什么?

ZooKeeper 使用 Paxos 算法进行 Leader 选举,保证集群中只有一个 Leader 节点提供服务。

7. ZooKeeper 如何保证数据一致性?

ZooKeeper 通过 ZAB 协议保证数据一致性,ZAB 协议的核心是原子广播协议,确保所有 Follower 节点的数据与 Leader 节点保持一致。

8. ZooKeeper 有哪些节点类型?

ZooKeeper 有两种节点类型:持久节点和临时节点。持久节点在创建后会一直存在,直到被删除;临时节点在会话结束后会被自动删除。

9. ZooKeeper 的 ACL 机制是什么?

ACL(Access Control List) 机制用于控制 ZNode 的访问权限,可以设置不同的权限给不同的用户。

10. ZooKeeper 的优缺点是什么?

优点:

  • 简单易用
  • 性能高
  • 数据一致性保证

缺点:

  • 不适合存储大量数据
  • 单点故障问题 (可以通过集群部署解决)

总结

以上是 ZooKeeper 2021 年常见面试题的解析,希望对大家有所帮助。