Paxos共识算法

Paxos算法

历史

  • Paxos( The Part-Time Parliament )共识算法由Leslie Lamport在1989年首次发布,后来由于大多数人不太能接受他的介绍方法,于是在2001年重新写一篇名Paxos算法的简化版,叫Paxos Made Simple。主要讲述两阶段共识协议部分。
  • Paxos算法是分布式系统中的一个共识算法家族,也是第一个有完整数学证明的共识算法
  • 所有的分布式共识算法都是基于Paxos算法,比如现在比较流行的zab和raft

Basic Paxos

Basic Paxos 是在一轮决策中对一个或多个被提议(propose)的值,最终选出一个值达成共识
在这里插入图片描述
Basic Paxos 可以解决的问题
i.选主
ii.资源互斥访问
iii.复制日志的一致性
iv.其它
可以处理的场景:

  • 异步网络,网络不稳定,数据可能会丢失、延迟、重复
  • 大多数节点还在运行,决策就可以继续运行,允许少量节点宕机

不可以处理的场景:
消息被篡改或伪造

Paxos角色构成

Proposer
处理客户端请求,主动发起提议。

Acceptor
被动接收来自Proposer的提议信息,并且返回投票结果,通知Learner

Learner
被动接收来自Acceptor的信息

Paxos两阶段协议

在这里插入图片描述
在这里插入图片描述
讲述的是Paxos算法流程,具体的会在Paxos Made Simple一文中讲解到

Paxos实例场景

在这里插入图片描述
P1做为Proposer发出序号为1的准备请求给A1,A2。A1,A2接收后发送承诺给P1,承诺不接受比序号1小的请求。P1发送accpet接收请求给A1,A2。accept请求中包含请求序号为1的提案“cat”。A1,A2,A3中超过半数以上节点接收提案后即可视为达成共识,达成后的结果会返回给Learner所有节点。
在这里插入图片描述
上图描述的是Paxos算法的多Proposers情况。P1发送,准备请求1给A1,A2。同时P2发送准备请求2给A2,A3。P1的请求后于P2的请求到达A2。此时A2,A3已经达到半数且满足共识要求,共识就算达成,P1由于之前提案没递交成功,会再次发送递序号更大交申请,递交给A1,A2时,由于A2已经达成共识,A2会返回达成共识的accepted结果,P1会根据接收到的结果将提案改成结果再次提交,从而达成共识,保证一致,一致的结果会发送给Learner图中没有指出。

Paxos死锁

在这里插入图片描述
由于算法中只承诺了不接受序号比当前承诺小的提案,但是会接收比 承诺过的序号 大的 序号,这样如果在达成共识前,不断地有Proposer节点向Acceptor节点提交准备请求都希望自己可以提交提案就会造成死锁,这也是这个算法的缺陷

当需要决定多个值时就需要连续执行多次Paxos算法,一般执行一次Paxos算法的过程称作A Paxos Run 或者 A Paxos Instance

关于Paxos Made Simple将在我的Paxos Made Simple这篇文章中进行讲解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值