Paxos算法

 

Paxos是一个基于消息传递的解决分布式数据一致性的算法。

Basic Paxos算法中共有三种角色:

         Proposer:向集群提出议案。

         Acceptor:对提议进行投票,只有在达到多数派时提议才会被接收。

         Learner:提议接受者,对集群的一致性没有什么影响,单纯的记录人员。

 

        另外,client也是一个重要组成部分,是请求Proposer发起提议的。

 

Proposal:proposer提出的议案或者建议,编号为n和内容为value。(自增的,不受某个proposer控制)

      一个进程可以充当不同的角色。

算法的最终目标:每一个Proposer,Acceptor,Learner都认为同一个Proposal中的value被选中。

 

算法分为两个阶段:

      阶段1:Prepare

Proposer 提出一个编号n的proposal(n),广播给所有的Acceptor。

      阶段2:Promise

如果n大于该Proposer接收过的proposal(如n-1),就接收Proposal并返回空值,否则拒绝,如果拒绝后,他发现已经接收了Proposal(x,value),就返回给Proposer编号和内容。

     阶段3:accept

proposer接收到半数以上的空值,说明达成一致,则返回给acceptor:proposal(n,value);如果发现存在编号更大的proposal,提取value,以一个更大的编号m,组合成proposal(m,value)发送出给acceptor。

     阶段4:accepted

acceptor如果一段时间内没有收到任何编号大于N的提案,就接受该提案的内容,否则拒绝。当Proposer接收到超过半数的accepor返回的Accept(m)时,达成共识。

可能导致的问题是:

活锁:两个proposer较劲,彼此提出更大的编号。

效率低:两轮RPC

难实现。

 

Multi Paxos:

会有一个节点是leader,是唯一的propser,所有的请求都需要经过此leader。

 

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值