Paxos理论介绍(二):Multi-Paxos

来源:互联网 发布:帝国cms和phpcms合并 编辑:程序博客网 时间:2024/06/10 17:53

朴素Paxos通过多轮proposer、acceptor选举的方式选举一个提议,这个过程为一个Instance。Multi-Paxos通过算法来确定很多Instance的值,这些Instance的值在多个节点的顺序保持一致,在朴素Paxos中,通过计算找到编号为i的Instance,之后再计算编号为i+1的Instance,这样形成顺序的Instance,这样形成的latency(延迟)很高。而Multi-paxos希望找到Paxos与提议的关系,在某些情况下,省略prepare的过程。


下图描述了Multi-paxos的演进过程:


申明:节点A/B/C,1(A)表示A节点产生编号1。

常规的Paxos的提交过程。

只有A节点提交的演进过程:


当只有A节点提交时,每次prepare都是一样的,所以可以把promise表示为全局变量。


在之后A节点提交的时候,当我们有Instance i的时候,我们定义在[i , 无限]的时候都有promise。

当有B提交新的prepare时,[i , 无限]被打破,如图,这时候只有[1 , 3]  prepare 。

为什么在Multi-Paxos时,我们不需要prepare, 因为在accep的时候已经prepare了,论文中是说通过合并Prepare了。

总结:Multi-Paxos利用单节点提交时,promise生效范围为全局Instance,省去了prepare的过程,Mutli-paxos是某种情况下优化,Mutli-Paxos的约束。

要发挥Multi-Paxos单节点提交的优势,需要一个leader提交,由Multi-Paxos自然产生leader,Multi-Poxos希望一直持续保持单节点Accept,所以其他节点应该拒绝请求,这时候自然选出了leader。用paxos进行选举Master是有意义的,而不应该用到Multi-poxos的leader产生上。

Paxos的一致性算法应用于读、写:当我们需要读到latest的数据时,通过paxos算法选出Master,在Master进行读写操作,达到强一致性。Master与leader的区别:leader为加速Paxos的选举提议过程,而Master是要达到分布式的强一致性,需要Paxos等一致性算法来选举,保证。