分布式学习十:ZAB协议

简介: 分布式学习十:ZAB协议

ZAB协议

ZAB 协议是为分布式协调服务ZooKeeper专门设计的一种支持崩溃恢复的原子广播协议。

ZAB协议的开发设计人员在协议设计之初并没有要求其具有很好的扩展性,最初只 是为雅虎公司内部那些高吞吐量、低延迟、健壮、简单的分布式系统场景设计的。

在 ZooKeeper的官方文档中也指出, ZAB协议并不像Paxos算法那样,是一种通用的分布式一致性算法,它是一种特别为ZooKeeper设计的崩溃可恢复的原子消息广播算法。

总结来说,ZAB 协议就是:"主备一致性","消息广播","崩溃恢复"

流程

所有节点都会在3个状态中转换:

1:选举leader/崩溃恢复(leader宕机重新选举)

2:消息广播 (leader接收消息广播给Follower)

3:崩溃恢复(leader宕机重新选举)

在节点启动后,会寻找leader节点,没有的话将选举一个leader

选举leader成功后,所有数据写入都将经过leader,由leader发送给其他follower

当follower与leader失去联系之后,将进入崩溃恢复模式,在follower中选举一个拥有相对最新数据的节点成为leader

重新消息广播

消息广播

leader选举成功后,所有数据将写入进leader,由leader发送给其他follower

image.png

事务二阶段提交

在消息广播中,leader服务器会给每个事务提案分配一个全局单调递增的唯一事务ID,每次广播时需要保证每个事务ID的先后顺序

follower接收到广播之后,需要把事务写入到磁盘,写入成功之后给leader反馈ACK

leader接收到超过半数ACK后,广播commit信息,要求follower提交事务

注意,每个事务ID需要严格遵守顺序

崩溃恢复

当leader服务器崩溃后,可能会出现以下情况

1:leader出现了提案5,通知时中途崩溃了

2:leader在发送提交提案5时,中途崩溃

2种情况都可能出现,这个时候所有follower数据都是不一致的

这个时候,follower选举时,需要选举一个commitID最大值的follower作为leader,每个follower选举时需要比对自己的commit ID,只有大于时才投票,这个时候可以确保新选举的leader拥有最完整的数据

前 leader恢复

事务ID是一个64位的数字,低32位记录了单调递增的事务ID,高32位记录了leader周期的编号,每次选举都会使得此值+1

在前leader恢复后,由于新leader正常工作,可能提出了新的提案5,这个时候前leader需要比对高32位编号,如果不一致,则丢弃此提案,同步新leader的数据

崩溃恢复方式类似于raft

目录
相关文章
|
2月前
|
消息中间件 关系型数据库 MySQL
分布式事物-全面详解(学习总结---从入门到深化)
分布式事物-全面详解(学习总结---从入门到深化)
1471 0
|
1月前
|
SQL 关系型数据库 数据库
学习分布式事务Seata看这一篇就够了,建议收藏
学习分布式事务Seata看这一篇就够了,建议收藏
|
2月前
|
消息中间件 Dubbo 应用服务中间件
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)
80 0
|
3月前
|
消息中间件 RocketMQ 微服务
分布式事物【库存微服务业务层实现、实现充值微服务、充值微服务之业务层实现、账户微服务之业务层实现】(九)-全面详解(学习总结---从入门到深化)(下)
分布式事物【库存微服务业务层实现、实现充值微服务、充值微服务之业务层实现、账户微服务之业务层实现】(九)-全面详解(学习总结---从入门到深化)
37 0
|
2月前
|
Java 数据库连接 API
分布式事物【XA强一致性分布式事务实战、Seata提供XA模式实现分布式事务】(五)-全面详解(学习总结---从入门到深化)
分布式事物【XA强一致性分布式事务实战、Seata提供XA模式实现分布式事务】(五)-全面详解(学习总结---从入门到深化)
61 0
|
2月前
|
存储 Oracle 关系型数据库
分布式事物【Seata实现、下载启动Seata服务、搭建聚合父工程构建】(四)-全面详解(学习总结---从入门到深化)
分布式事物【Seata实现、下载启动Seata服务、搭建聚合父工程构建】(四)-全面详解(学习总结---从入门到深化)
45 0
|
3月前
|
NoSQL 中间件 API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(下)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
82 2
|
4天前
|
Dubbo Java 应用服务中间件
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
|
30天前
|
存储 监控 安全
金石推荐 | 【分布式技术专题】「单点登录技术架构」一文带领你好好认识以下Saml协议的运作机制和流程模式
金石推荐 | 【分布式技术专题】「单点登录技术架构」一文带领你好好认识以下Saml协议的运作机制和流程模式
67 1
|
30天前
|
存储 算法 前端开发
作者推荐 | 分布式协议之巅 — 揭秘基础Paxos与Raft协议如何实现分布式系统达成一致性(非变种Paxos协议)
作者推荐 | 分布式协议之巅 — 揭秘基础Paxos与Raft协议如何实现分布式系统达成一致性(非变种Paxos协议)
44 0

热门文章

最新文章