这篇文章将为大家详细讲解有关什么是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。
关于什么是paxos协议就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。