一致性协议有很多种,比如 Paxos,Raft,2PC,3PC等等,在这讲一种协议,ZAB 协议,该协议应该是所有一致性协议中生产环境中应用最多的了。为什么?因为它是为 Zookeeper 设计的分布式一致性协议!
1. 什么是 ZAB 协议? ZAB 协议介绍
- ZAB 协议全称:Zookeeper Atomic Broadcast(Zookeeper 原子广播协议)。
- Zookeeper 是一个为分布式应用提供高效且可靠的分布式协调服务。在解决分布式一致性方面,Zookeeper 并没有使用 Paxos ,而是采用了 ZAB 协议。
- ZAB 协议定义:ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持****崩溃恢复和原子广播协议。下面我们会重点讲这两个东西。
- 基于该协议,Zookeeper 实现了一种主备模式的系统架构来保持集群中各个副本之间
数据一致性。具体如下图所示:

上图显示了 Zookeeper 如何处理集群中的数据。所有客户端写入数据都是写入到 主进程(称为 Leader)中,然后,由 Leader 复制到备份进程(称为 Follower)中。从而保证数据一致性。从设计上看,和 Raft 类似。
那么复制过程又是如何的呢?
复制过程类似 2PC,ZAB 只需要 Follower 有一半以上返回 Ack 信息就可以执行提交,大大减小了同步阻塞。也提高了可用性。
简单介绍完,开始重点介绍消息广播和崩溃恢复。整个 Zookeeper 就是在这两个模式之间切换。 简

ZAB协议是Zookeeper的核心,用于实现分布式一致性。它包括消息广播和崩溃恢复两个主要模式。在消息广播中,ZAB采用类似于2PC的原子广播过程,由Leader接收并复制事务到Follower,超过半数Follower响应即可提交。当Leader崩溃,ZAB进入崩溃恢复模式,通过选举新的Leader并同步数据来确保数据一致性。ZAB的事务ID(ZXID)用于确保事务顺序执行。
2902

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



