Zab 协议如何保持数据的一致性 | 学习笔记

简介: 快速学习 Zab 协议如何保持数据的一致性

开发者学堂课程【精通 Spring Cloud AlibabaZab 协议如何保持数据的一致性学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/634/detail/10104


Zab 协议如何保持数据的一致性


内容介绍

一、如何保持数据一致性问题

二、2pc 两阶段提交协议原理

三、算法如何实现

四、会出现的问题


一、如何保持数据一致性的问题

image.png

Zap 协议如何保持数据一致性,如上图假设,假设现在有三台节点,中间为 leader,从左往右一次为 myid=1myid=2myid=3Zookeeper 中,只要能有领导角色和跟随角色,任何写的请求绝对会统一转发到 leader 事件,这样才能保持数据一致性。

假设图中左边 follow 节点进行了一个写的操作,这个写的请求会被转发到中间 leader 事件,任何写的请求都会被转发给 leader 事件。Leader 节点先把这个数据写完之后再同步给所有 follow 节点。

所有写的请求统一交给我们的领导角色,领导角色写完数据之后,领导角色再将数据同步给每个节点。

注意:数据之间的同步采用2pc 两阶段提交协议。


二、2pc 两阶段提交协议原理

假设左侧 follower 节点有个写的请求转发给 leader 节点,leader节点写完请求之后会生成一个 zxid,叫做 zookeeper 的数字 id,每个都会对应一个 zx 的全局 id,如果有很多写的请求都转发到一个 leader 节点,zxid 有锁的机制,保证只有一个去做写的操作才会生成一个 zxid,这个 zxid 就标志着一个写的请求。

假设 zxid=100leader要把数据同步给 follower,这个同步过程叫做算法。


三、算法如何实现

Leader 节点会发两次通知,第一次通知要带上 zxid 告诉 follower 节点需要把数据同步给每个 follower 节点,问follower 节点是否可以接收,只要满足过半数的 follower 节点同意接收 zxid=100,这时leader节点才会把数据同步给 follower 节点。


四、会出现的问题

Leader 节点先把数据同步给左边 follower 节点,那么这个 follower zxid 会从0变为100,而此时,正好中间的leader 节点宕机,这时就需要从左右两个 follower 节点中选出一个新的 leader

那么这两个 follower 节点哪一个为新的leader节点?

左边 follower 节点数据最新 zxid=100,右边节点之前没有同步 leader 节点的数据 zxid=0,这种情况下应该先比较zxid,初始情况下 zxid=0,而左边已同步,比较 zxid 谁的数据大,则谁就是新的 leader

如果 zxid 相等的情况下,myid 谁最大谁就为领导角色(先比较 zxid)。

zxid 最开始搭建 ookeeper 时是没有的,是 Leader 写请求时生成。因为所有写的请求都要交给 leade 事件,每次做写的时候 zxid 会不断自增,不可能产生重复。

相关文章
|
存储 算法 关系型数据库
浅谈 Raft 分布式一致性协议|图解 Raft
本篇文章将模拟一个KV数据读写服务,从提供单一节点读写服务,到结合分布式一致性协议(Raft)后,逐步扩展为一个分布式的,满足一致性读写需求的读写服务的过程。
667 0
浅谈 Raft 分布式一致性协议|图解 Raft
|
存储 算法 架构师
【架构师指南】带你彻底认识 Paxos 算法、Zab 协议和 Raft 协议的原理和本质
【架构师指南】带你彻底认识 Paxos 算法、Zab 协议和 Raft 协议的原理和本质
571 0
【架构师指南】带你彻底认识 Paxos 算法、Zab 协议和 Raft 协议的原理和本质
|
算法
分布式学习十:ZAB协议
分布式学习十:ZAB协议
71 0
分布式学习十:ZAB协议
|
算法 安全
分布式一致性协议
分布式一致性协议
116 1
|
算法 Java 开发者
简单回顾 Zab 协议集群模式原理|学习笔记
快速学习简单回顾 Zab 协议集群模式原理
115 0
简单回顾 Zab 协议集群模式原理|学习笔记
|
存储 算法 安全
分布式系统与一致性协议
分布式系统的设计目标一般包括如下几个方面 - 可用性:可用性是分布式系统的核心需求,其用于衡量一个分布式系统持续对外提供服务的能力。 - 可扩展性:增加机器后不会改变或极少改变系统行为,并且能获得近似线性的性能提升。 - 容错性:系统发生错误时,具有对错误进行规避以及从错误中恢复的能力。 - 性能:对外服务的响应延时和吞吐率要能满足用户的需求。
|
存储 算法 开发者
浅谈一致性协议
浅谈一致性协议
188 0
浅谈一致性协议
|
算法 安全 索引
Raft 协议原理详解,10 分钟带你掌握!
Raft 是一种更为简单方便易于理解的分布式算法,主要解决了分布式中的一致性问题。相比传统的 Paxos 算法,Raft 将大量的计算问题分解成为了一些简单的相对独立的子问题,并有着和 Multi-Paxos 同样的性能,下面我们通过动图,以后还原 Raft 内部原理。
1598 0
Raft 协议原理详解,10 分钟带你掌握!
|
算法 调度
【分布式】一致性协议
继续前面的学习,这篇我们来学习在分布式系统中最重要的一块,一致性协议,其中就包括了大名鼎鼎的Paxos算法。
109 0
【分布式】一致性协议