paxos工程中的运用-multi-paxos

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35440678/article/details/78111594

什么是multi-paxos

上篇介绍了paxos的理论知识[http://blog.csdn.net/qq_35440678/article/details/78080431],要在实际工程运用大多数使用multi-paxos协议,原因是朴素paxos每次提议都执行完整paxos协议代价过大-3次网络交互,2 次本地持久化,因此,multi-paxos引入leader概念,较少paxos的prepare交互,较少朴素paxos每次提议交互过多问题;

multi-paxos概念:

在Paxos集群中利用Paxos协议选举唯一的leader,在leader有效期内所有的议案都只能由leader发起,这里强化了协议的假设:即leader有效期内不会有其他server提出的议案。因此对于redolog的同步过程,我们可以简化掉产生logID阶段和prepare阶段,而是由唯一的leader产生logID,然后直接执行accept,得到多数派确认即表示redolog同步成功。

根据定义引发几个问题:

  1. leader如何选举产生?
    首先,Multi-Paxos协议并不假设全局必须只能有唯一的leader来生成日志,它允许有多个“自认为是leader的server”来并发生成日志,这样的场景即退化为Basic-Paxos。通过朴素paxos得到大多数Acceptor同意后产生leader,并通过lease机制(下发有效期),保持leader身份。
  2. 如何优化读取操作?
    在Paxos协议中,对于决议的读取也是需要执行一轮Paxos过程的,在实际工程中做数据恢复时,对每条日志都执行一轮Paxos的代价过大,因此引入需要引入一种被成为confirm的机制,即leader持久化一条日志,得到多数派的accept后,就再写一条针对这条日志的confirm日志,表示这条日志已经确认形成了多数派备份,在回放日志时,判断如果一条日志有对应的confirm日志,则可以直接读取本地内容,而不需要再执行一轮Paxos。

参考资料

猜你喜欢

转载自blog.csdn.net/qq_35440678/article/details/78111594
今日推荐