Paxos算法

分布式系统中只存在“一种”一致性算法,那就是Paxos算法。前面提到的一致性看起来很容易实现,但是这都是建立在无故障或者允许无限等待或恢复的基础上。比如2PC就是无限等待协议,投票需要所有人都在。显然,这种方式在容错方面表现不好。Paxos是容错的分布式一致性算法,尽管节点可能会出错,网络会发生故障或者延迟,但所有节点都会同意相同的值

一致性的要求

正确性:满足一致性的定义;
容错:少部分节点挂了不影响整个过程;
可停止。
但是Paxos算法只能保证前两项。Paxos的目标是让所有的接受者同意提案

Paxos中出现的角色

客户端:发起请求
提议者(Proposer):接收请求并执行协议,领导者(Leader)为选举出来的协调者;
接受者(Acceptor):记住协议的状态,法定人数(Quorum)为任意大部分接受者的集合;
学习者(Learner):当一致意见抵达时,学习者执行请求或者发送回复给客户端。
粗略的过程:一个提议者决定成为一个leader,leader提出一个值并让大多数接受者接受。leader宣布结果或者重新再提议。
每个节点同时为一个提议者,一个接受者,一个学习者。

详细流程

阶段0:客户端发送请求给一个提议者;
阶段1a:指挥者创建提议N,发送给法定人数(N比该提议者使用的任何之前提议的编号都要大);
在这里插入图片描述
阶段1b:接受者收到提议,如果提议N比之前提议大,那么回复leader过去提议最高的编号和值,并承诺忽视所有小于N的提议;如果提议N比之前的提议小,直接忽略掉,提议被拒绝。
在这里插入图片描述
阶段2a:leader如果收到了足够的允诺,则设定提议的值为V,V可以是决定好的也可以是最新的值,并发送带有N和V的接收请求给法定人数。
在这里插入图片描述
阶段2b:对于接受者,如果提议仍然保留,注册V值,发送已接收信息给提议者和学习者;否则,忽略该请求。
在这里插入图片描述
阶段3:学习者回复客户端或对请求进行操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值