全部学科
Python全栈
python
NodeJS全栈
nodejs
📝 1 篇文章 10 道配套习题

ZAB协议深度解析专题

专题说明

本专题深入剖析ZooKeeper Atomic Broadcast (ZAB)协议的底层实现细节,包括源码实现、两阶段提交优化、消息队列设计、Epoch纪元管理、Follower数据同步机制等专家级内容。

学习目标

  1. 深入理解ZAB协议在Leader与Follower中的源码实现
  2. 掌握ZAB对传统两阶段提交的优化设计
  3. 分析发送队列与接收队列的流水线机制
  4. 深入理解Epoch纪元管理机制
  5. 掌握DIFF、TRUNC、SNAP数据同步方式

学习内容

  • Leader/Follower源码实现细节
  • 两阶段提交优化与减少网络往返
  • 发送队列与接收队列设计
  • Epoch纪元概念与变更流程
  • DIFF/TRUNC/SNAP同步触发条件

学习建议

  • 需具备ZAB协议基础知识
  • 结合源码阅读加深理解
  • 关注性能优化与一致性保证的平衡

📝 配套习题(10 题)

💡 参考答案在文末
单选题
1

ZAB协议在Leader节点中的核心实现类是什么?

A

FollowerZooKeeperServer

B

LeaderZooKeeperServer

C

ObserverZooKeeperServer

D

QuorumPeerMain

2

ZAB协议相比传统两阶段提交的优化是什么?

A

使用全部节点确认替代过半确认

B

使用过半确认替代全部节点确认,减少等待时间

C

增加Prepare阶段

D

使用三阶段提交

3

ZAB协议中Leader的消息广播使用什么队列设计?

A

单一队列处理所有消息

B

发送队列和接收队列分离,实现流水线处理

C

使用消息中间件

D

无队列设计,直接发送

4

ZAB协议中Epoch(纪元)的主要作用是什么?

A

标识节点ID

B

标识Leader任期,区分不同Leader产生的事务

C

标识客户端会话

D

标识节点数据版本

5

ZAB协议中Follower数据同步的DIFF方式是什么?

A

全量同步所有数据

B

只同步缺失的事务日志差异

C

截断多余的事务

D

不同步数据

多选题
6

ZAB协议源码中,Leader处理消息广播流程涉及哪些关键组件?

A

ProposalRequestProcessor - 生成Proposal

B

CommitProcessor - 处理Commit

C

FollowerRequestProcessor - Follower请求处理

D

SyncRequestProcessor - 同步处理

7

ZAB协议消息队列设计带来的优化有哪些?

A

支持消息批处理减少网络开销

B

实现流水线机制提高吞吐量

C

避免消息阻塞

D

减少消息序列化开销

8

ZAB协议Follower数据同步的三种方式分别适用于什么情况?

A

DIFF - Follower落后少量事务

B

TRUNC - Follower有Leader没有的多余事务

C

SNAP - Follower数据落后太多需要全量同步

D

SNAP - Follower数据完全一致

填空题
9

ZAB协议简化两阶段提交:省略____________阶段,直接进入____________阶段发送提议,等待____________节点ACK确认后发送Commit,减少了网络往返。

10

ZAB协议崩溃恢复中,新Leader的____________比旧Leader大,需要____________旧Leader____________的Proposal,保证只有当前Epoch的有效事务被提交。

参考答案
1.B 2.B 3.B 4.B 5.B 6.A;B;D 7.A;B;C 8.A;B;C 9.Prepare;Proposal;过半 10.Epoch;丢弃;未过半确认
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 ZAB协议与一致性保证专题
下一个专题 → ZooKeeper概述与核心概念专题
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码