paxos协议

        解决问题:在消息有可能丢失的情况下,如何保证多个提出者(Proposer)和多个接收者(Acceptor)最终得到一个一致的提案。

        理论要求:

            1.一个acceptor必须批准他的第一个提案

            2.存在一个超过半数acceptor的集合s,要么s没有批准过,要么s批准过提案中,最大编号小于Mn,值为Vn,那么提案[Mn,Vn]才会被批准

        Acceptor工作流程:

            1.如果Acceptor提出的prepared的Mn比他批准过的大,则他不再接收小于Mn的版本号,但是会批准大于Mn的。并且返回小于Mn的已经批准的最大版本号的值value

        Proposer工作流程:

            1.向所有Acceptor发送prepared请求,如果收到过半以上响应,则进行下一步。

            2.如果收到的响应中已经有了value值,则只能选取版本号最高的value值作为自己提出提案的value。如果没有value,则可以任意选取。

优化:

        1.leanrer也是一个集群,如果learner与acceptor都有连接,则通信次数会过多,如果learner只有一个,又容易挂掉。那么最优解为选取一部分learner作为集群。

        2.会出现这样的情况,p1进行prepared的时候,acceptor批准,在它提交提案过程中,acceptor又prepare了更高的版本号,导致他的提案被忽略,产生“活锁”。所以解决方法为使用单个的Proposer。

            

转载于:https://my.oschina.net/vqishiyu/blog/3093772

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值