Paxos算法总结

Paxos算法


一、基本概念
算法的参与者有三个角色,每个参与者可以兼多个角色
提议者(proposer),负责提案,提案包括编号和提议的value
接收者(acceptor),负责批准议案
学习者(learner),学习议案


算法一致性的语义
决议只有被提议者提出后才能被批准(没有批准的称为提案)
在一次Paxos算法执行中,只能批准一个决议
学习者只能获取被批准的决议


四个规则
规则1:一个批准者必须批准它所接受到的第一个提议
规则2:一旦一个具有value值的提案被批准后,之后任何批准者再次批准的提案必须包含value
规则3:一旦一个具有value值的提案被批准后,之后任何提议者再次提出的提案必须包含value
规则4:一旦一个编号为n值为value的提案被批准后,存在一个批准者集合,要么他们都没有批准编号小于n的提案,要么他们已经批准编号小于n的提案中编号最大的那个提案具有value值


二、Basic Paxos
算法分为两个阶段
1.prepare阶段
(1)提案者希望提出方案V1,首先发送prepare请求到大多数批准者,提案的编号为SN1
(2)当批准者接收到prepare请求SN1时,检查上次回复过的prepare请求SN2
a)如果SN2>SN1,无视prepare请求SN1。
b)否则检查上次批准过的accept请求<SNx,Vx>,并且回复<SNx,Vx>。如果之前没有进行过批准,则简单回复<OK>
2.accept批准阶段
(1)经过一段时间,收到一些批准者的回复,回复分为以下几种
            a)回复数量满足多数派,并且所有回复都是<OK>,则提议者发出accept请求,请求内容为<SN1,V1>
b)回复数量满足多数派,但有的回复是<SN2,V2>,<SN3,V3>...则提议者找到所有回复中超过半数的那个,假设是<SNx,Vx>,则发出accept请求,请求内容为<SN1,Vx>
c)回复数量不满足多少派,提议者增加序号SN1+1,转1继续执行
(2)经过一段时间,收到一些批准者的回复,回复分为如下几种
a)回复数量满足多数派,则确认V1被接受
b)回复数量不满足多少派,则V1没有被接受,提议者增加序号SN1+,转1继续执行


三、Fast Paxos
Paxos在竞争情况下,收敛速度慢,甚至出现活锁。为了避免竞争,加快收敛,增加一个leader角色,leader只有一个。其他参与者扮演批准者角色,同时所有参与者扮演学习者角色。
只有Leader提出议案,Leader的工作分为三个阶段:
(1)学习阶段:向其他参与者学习自己不知道的数据(决议)
(2)同步阶段:让绝大多数参与者保持数据(决议)的一致性
(3)服务阶段:为客户端服务,发起提案
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值