Blockchain的鱼和熊掌系列(9)Multi-Paxos协议

To build a fault-tolerant system based on the Paxos consensus protocol has been proved to be a non-trivial problem. Therefore, in order to make the Paxos protocol simple and efficient, the Multi-Paxos protocol was proposed then. One of the biggest difference between Paxos and Multi-Paxos is that the latter has a leader node while the former does not.

Q1: Multi-Paxos是什么鬼?
Multi-Paxos协议是经典的Paxos协议的简化版本,有谷歌公司的工程师所提出,是一种食人间烟火的协议(有前提,有应用场景)。二者最大的差别是Multi-Paxos包含有leader节点而Paxos没有。因为Multi-Paxos的除了leader节点之外的其他操作和Paxos大致相同,所以这里主要讲讲leader节点相关的操作:leader节点任何人都可以竞选,有效期视当前网络性能状况而不同。leader节点当选之后,需要采用相关的机制来确认自己的log是最新的log。然后leader节点开始正式投入工作,即:clients一律提交requests给leader,直接由leader在accept阶段确认是否accept,然后转发给leader的各个followers节点。

Blockchain的鱼和熊掌系列(9)Multi-Paxos协议_第1张图片

Paxos会出现这样一种情况:每一个节点既propose又accept,导致很多的议案无法稳定地维持多数人同意,跌宕起伏,造成分布式系统中Paxos协议性能不稳定。Multi-Paxos可以解决这种情况,因为引入leader节点,只有leader节点才能进行提交议案的操作,followers节点不允许提交议案,这样直接省去了propose阶段,只需要accept阶段即可。虽然引入leader节点的角色需要额外的支持机制,但是整体上,Multi-Paxos性能优于Paxos性能。

Q2:Multi-Paxos协议下,leader节点的proposols是否可靠?
首先,分布式数据一致性协议关注的是分布式网络下各个数据节点的数据的一致性问题,至于这些数据本身是否被leader修改过,这可能不是该协议的重点。
但还是来分析一下:如果网络中少于1/4节点是恶意节点,且leader节点是诚实的节点(诚实地接受数据,验证数据和转发数据),那么全网的数据的有效且一致性是可以保证的;如果网络中少于1/4节点是恶意节点,但leader节点是恶意节点,那么全网的数据仍然是一致的,但原始数据是被修改过的;如果网络中大于1/4节点是恶意节点,那么全网的数据就无法保证一致性了。
总体来看,Multi-Paxos协议虽然性能上占优,但需要引入可靠的leader节点来广播transactions信息,这点与blockchain公网的设计思路相互违背,因此比较不适合用于blockchain公网络上。但如果可以保证分布式节点的可信度,确保leader节点诚实地接收处理转发数据,那么分布式transactions数据同步采用Multi-Paxos协议,性能上也是一个不错的选择。

欢迎关注“Aha实验室”微信公众号

参考
[1] Chandra T D, Griesemer R, Redstone J. Paxos made live: an engineering perspective[C]//Proceedings of the twenty-sixth annual ACM symposium on Principles of distributed computing. ACM, 2007: 398-407.
[2] Ongaro D, Ousterhout J K. In Search of an Understandable Consensus Algorithm[C]//USENIX Annual Technical Conference. 2014: 305-319.

你可能感兴趣的:(区块链原理和应用)