ZooKeeper 与协调原语

共 18 题
#

1. Curator 框架的 InterProcessMutex 分布式锁实现

A 客户端监听锁路径下所有子节点,任一节点删除都会唤醒自己
B 锁节点是持久节点,客户端崩溃后锁不会自动释放
C 客户端只监听比自己的节点编号小的前一个节点,避免惊群效应 ✓ 正确答案
D 获取锁时直接创建节点,不存在竞争,无需排队
#

2. ZooKeeper 的 ZAB 协议与 Znode 数据模型

A 所有 Follower 必须 ACK 后 Leader 才提交事务
B Leader 收到半数以上 Follower 的 ACK 后即提交事务 ✓ 正确答案
C 写请求可以在任意节点直接执行并广播
D ZAB 协议不需要分配事务 ID,直接按时间顺序执行
#

3. ZooKeeper 的临时节点、顺序节点在分布式锁/选主的应用

A 临时节点在 Leader 崩溃后仍需手动删除才能让位
B 选主时所有节点都监听 Leader 节点,无需维护顺序
C 顺序节点编号不保证单调递增
D 编号最小的临时顺序节点成为 Leader,其余节点监听前一个节点 ✓ 正确答案
#

4. Znode 的 ACL 权限模型(world/auth/digest/ip)与生产配置

A 父节点的 ACL 会自动递归应用到所有子节点
B CREATE 和 DELETE 是同一个权限,统称为写权限
C digest 方案使用明文密码进行认证
D world 方案表示对所有用户开放,无需认证 ✓ 正确答案
#

5. 基于 ZooKeeper 实现乐观锁(version)与悲观锁

A 乐观锁通过创建临时节点实现互斥
B 乐观锁所有写操作都会阻塞其他客户端
C 乐观锁不需要读取版本号,直接写入即可
D 乐观锁利用 dataVersion 校验,版本不一致时抛出 BadVersionException ✓ 正确答案
#

6. ZooKeeper 与 etcd 在协调场景的对比

A ZooKeeper 使用 Raft 协议,etcd 使用 ZAB 协议
B 两者都是 CP 系统,提供强一致性保证 ✓ 正确答案
C etcd 使用自定义 Java 客户端协议,ZooKeeper 使用 gRPC
D etcd 的数据模型是树形结构,ZooKeeper 是扁平 KV 结构
#

7. ZooKeeper 的 Quorum 与脑裂防护(半数以上)

A 只要集群中有 2 个节点存活就能提交事务
B 半数以上原则保证网络分区时最多只有一个分区能形成 Quorum ✓ 正确答案
C 集群部署偶数节点比奇数节点更安全
D 3 节点集群可以容忍 2 个节点故障
#

8. ZooKeeper 的 Watch 机制的一次性与会话(Session)超时

A Watch 客户端注册后持续有效,无需重新注册
B 会话超时不会影响临时节点的存在
C 客户端收到一次事件通知后 Watch 即失效,需重新注册 ✓ 正确答案
D 一个节点只能注册一个 Watch
#

9. ZooKeeper 的 ZAB 协议,Leader 选举、崩溃恢复与事务日志如何同步?

A 新 Leader 随机选择,不关心事务数据
B 崩溃恢复后所有尚未提交的事务都会直接提交
C 崩溃恢复时新 Leader 会与 Follower 对齐事务日志,保证已提交事务不丢失 ✓ 正确答案
D 崩溃恢复阶段不进行任何数据同步
#

10. ZooKeeper 会话与会话超时,心跳、临时节点失效与客户端重连的语义如何?

A 会话超时后临时节点仍然保留
B 客户端重连一定恢复原会话,临时节点不会丢失
C 会话过期时服务器删除该会话创建的所有临时节点 ✓ 正确答案
D 会话超时由客户端单方面判定,与服务器无关
#

11. ZK 的 watch 机制,一次性通知、顺序保证与丢失事件的工程处理如何?

A Watch 是持久的,注册一次即可永远监听
B 先读取数据再注册 Watch 不会造成事件丢失
C 收到事件后应立刻重新注册 Watch,并采用先注册后读取的顺序 ✓ 正确答案
D 不同节点的 Watch 事件会乱序到达
#

12. Curator 的 LeaderLatch/LeaderSelector 选主 API 与 InterProcessMutex 的区别

A InterProcessMutex 用于选主,不具备互斥语义
B LeaderLatch 适合持续循环的 Leader 任务
C LeaderSelector 通过 takeLeadership 回调持续选主,回调返回后重新竞选 ✓ 正确答案
D 三者底层实现完全不同,无共同点
#

13. ZK 的典型应用,分布式锁、服务注册、配置管理与其在集群规模下的限制如何?

A ZK 的写性能可以水平扩展,任意加节点即可提升吞吐
B ZK 单节点可存储任意大小的数据
C ZK 所有写操作都经过 Leader 串行广播,写吞吐受限于 Leader 刷盘 ✓ 正确答案
D ZK 的连接数没有上限,可无限增长
#

14. ZK 顺序节点与分布式锁,临时顺序节点的公平锁如何实现?

A 等待者只监听自己前一个节点,实现公平与高效唤醒 ✓ 正确答案
B 每个等待者都监听锁路径下所有节点,任一节点删除即唤醒
C 顺序节点编号随机,不保证先来先得
D 持锁者释放后所有等待者同时抢锁
#

15. ZooKeeper 的 Znode 大小限制与性能注意点

A Znode 可以存储任意大小的数据而不会影响性能
B 数据越大,ZK 的写广播反而越快
C 1MB 限制只影响读操作,不影响写操作
D Znode 数据大小默认限制为 1MB,不宜存储大块数据 ✓ 正确答案
#

16. ZK 集群的读写模型,Leader/Follower/Observer 与顺序一致性(线性写)如何?

A 所有读请求都由 Leader 处理,保证读线性一致
B Observer 参与投票,可以提升写入性能
C 写请求由 Leader 统一处理并按 zxid 顺序广播,写是线性一致的 ✓ 正确答案
D Follower 只能处理写请求,不能处理读请求
#

17. ZK 在 Kafka/HDFS 中的应用,元数据管理与协调职责的边界如何?

A ZK 用于 HDFS 的 NameNode 高可用选举与故障转移 ✓ 正确答案
B ZK 存储 Kafka 的日志数据主体
C ZK 存储 HDFS 的块数据
D Kafka 始终依赖 ZK,无法移除
#

18. ZooKeeper 的 4lw 命令(stat/ruok/mntr)与运维监控

A ruok 返回 imok 表示集群整体健康
B 4lw 命令无法返回 Leader 状态
C stat 命令用于修改节点数据
D mntr 输出监控指标,适合监控系统采集 ✓ 正确答案