ZAB 协议是 ZooKeeper 的灵魂,是其实现强一致性和高可用性的基石。
一、ZAB 协议是什么?
ZAB 的全称是 ZooKeeper Atomic Broadcast,即 ZooKeeper 原子消息广播协议。
它是一种专为 ZooKeeper 设计的支持崩溃恢复的原子广播协议。它的核心目标是在一个分布式系统中,保证所有节点数据的最终一致性。
二、ZAB 协议的核心作用
ZAB 协议的作用主要体现在以下两个模式的紧密协作上:
作用一:选主与恢复 —— 构建可靠基础
当集群启动,或者 Leader 节点宕机时,ZAB 协议会进入恢复模式。
1. Leader 选举:
问题:集群群龙无首,无法处理写请求。
ZAB 的作用:通过一个快速的选举算法,从众多 Follower 中选举出一个新的 Leader。选举的标准是寻找数据最全
(拥有最大 ZXID - 事务ID)的节点。这确保了新 Leader 拥有最完整的数据。
2. 数据同步:
问题:选举出的 Leader 需要确保所有 Follower 与它的数据状态保持一致。
ZAB 的作用:Leader 会与所有 Follower 进行数据同步,将自身的最新数据同步给那些数据滞后的 Follower。
这个过程完成后,整个集群就达到了一个一致的状态。
此阶段的目标是: 快速产生一个唯一且数据最全的领导者,并让整个集群的数据恢复到一致的状态,为后续提供正常服务打下基础。
作用二:消息广播 —— 处理日常请求
当集群完成了 Leader 选举和数据同步后,ZAB 协议就会从恢复模式切换到广播模式,开始处理客户端的写请求。
工作流程(两阶段提交的简化版):
请求提案:Leader 接收到客户端的写请求后,将其转换为一个提案,并为这个提案分配一个全局单调递增的 ZXID,然后将提案广播给所有的 Follower。
确认提案:每个 Follower 接收到提案后,会将其持久化到本地磁盘的事务日志中,然后向 Leader 发送一个 ACK 确认。
提交提案:Leader 等待,直到收到超过半数的 Follower 的 ACK。
通知提交:Leader 此时会提交这个提案(更新自身内存数据),并广播一个 COMMIT 消息给所有的 Follower。
应用变更:Follower 接收到 COMMIT 消息后,才更新自身的内存数据。
此阶段的目标是: 保证所有写请求按照相同的顺序在集群的所有节点上被原子地应用。要么所有节点都应用这个变更,要么都不应用。
三、ZAB 如何保证 ZooKeeper 的特性?
现在,我们来看 ZAB 协议是如何支撑起 ZooKeeper 的那些重要特性的:
顺序一致性:
ZAB 协议通过全局递增的 ZXID 为每一个写请求排序。Leader 严格按照 ZXID 的顺序广播提案,
从而保证了所有节点看到的事务顺序是完全一致的。这是实现分布式锁等高级功能的基础。
原子性:
ZAB 的“原子广播”确保了数据更新的原子性。一个事务要么在所有节点上成功(收到多数派 ACK 后提交),
要么在所有节点上失败(无法达成多数派共识)。不存在中间状态。
单一系统映像:
无论客户端连接到哪个节点,看到的数据视图都是一致的。这得益于 ZAB 协议保证了所有节点的数据最终一致。
即使客户端连接到一个数据稍旧的 Follower,该 Follower 也会在 ZAB 协议的数据同步机制下迅速追赶上 Leader 的进度。
高可用性与可靠性:
ZAB 的恢复模式使得 ZooKeeper 在 Leader 宕机后,能够在极短时间内选举出新 Leader 并恢复服务,
实现了自动故障转移。只要集群中超过半数的节点存活,服务就可用。
实时性:
一旦一个写操作被提交,客户端最终就能读到最新的值。因为 Follower 在提交事务后,本地内存数据立即更新,后续的读请求就能立刻看到。
四、ZAB 与 Paxos 的关系
ZAB 协议经常被拿来与经典的 Paxos 算法进行比较。它们都是分布式一致性算法,但 ZAB 不被认为是 Paxos 的一个变种,而是为其特定场景(ZooKeeper)设计的。
一个核心区别是:ZAB 明确规定了唯一的 Leader,并且所有写操作都必须通过这个 Leader,从而简化了流程,
并强保证了操作的全局顺序。而标准的 Paxos 在实现时,每个提案都可以有独立的提议者,顺序保证会更复杂。
总结
ZAB 协议在 ZooKeeper 中扮演着 “总指挥” 和 “数据同步官” 的角色:
作为 “总指挥”,它通过广播模式,指挥所有节点按照统一的顺序执行写操作。
作为 “数据同步官”,它通过恢复模式,在领导更迭时,迅速恢复集群的秩序和数据一致性。
正是由于 ZAB 协议的存在,ZooKeeper 才能成为一个高性能、高可用且强一致的分布式协调服务,成为大数据和分布式系统中不可或缺的基石。
谈ZAB协议在zookeeper中的作用
最新推荐文章于 2025-11-23 22:37:35 发布
1084

被折叠的 条评论
为什么被折叠?



