「分布式」基础 - Multi Paxos, Fast Paxos 与现实世界产生共振

正如上一篇文章 -

「分布式」基础 - Paxos, 解决了无处不在的共识问题

共识算法Paxos解决了共识问题,也就是大家对同一议题达到一致的过程和原则。结合 -

「分布式」基础 - 2PC & 3PC (二阶段提交 & 三阶段提交)

可以看出,Paxos其实是二阶提交算法。现实世界中我们面对的问题,常常是需要多个议题同时进行,需要快速达成多轮共识。如何理论结合实际,与现实世界产生共振,互惠互利,实现双赢?

「分布式」基础 - Multi Paxos, Fast Paxos 与现实世界产生共振

Concept ~ Reality

Multi Paxos

Paxos共识算法清晰的解释了共识达成的流程和原则。当我们结合理论看实际的时候,会发现,在现在世界中,我们往往需要同时讨论多个议题,那我们该如何优化和调整呢?

「分布式」基础 - Multi Paxos, Fast Paxos 与现实世界产生共振

Paxos

让我们通过上图来回顾一下Paxos,可以想像一样,如果多个提议发生,也就是上面这些流程会重复发生很多遍,会有哪些问题?

  • 每一轮共识都存在提议者之间的竞争,可不可以优化?
  • 每一轮共识都需要接收者的PROMISE,是否可以优化?

我们先把两个重复流程摆出来,方便大家更直观的感受一下:

「分布式」基础 - Multi Paxos, Fast Paxos 与现实世界产生共振

Multi Paxos

上图就是Multi Paxos的关键所在:

  • 在基础Paxos上,如果一个proposer的建议和大家达成了共识,我们有理由相信,这个proposer肯定有什么过人之处,比如网络好,服务器运算能力强,响应快。那么假设这个proposer提议了100次,被接收了99次,那么我们是不是可以更信赖这个proposer。如图所示,我们可以将其升级为Leader,这样做的好处是我们可以略掉二阶提段中的第一阶段,直接propose值给所有人,大家也直接接受。
  • 这么做的前提是这个Leader很稳定,那么为了突出这一点,我们可以引入I(Iteration - 迭代),在这个proposer获取大家信任时,并成为leader的过程中,所有由这个leader发出的propose,我们用I来代表这个proposer的时代发生的提案轮数。如上图I+1,就是代表在成为leader之后的第一次提案。

可以看出,在Multi Paxos中,只要成功确认了一次Proposer,在随后的提议协调过程中,都将由这个Proposer来管理,大大提升了效率,省掉了第一阶段,为后续共识快速达成提供了基础。对比Paxos和Multi Paxos,我们可以看出如下理念的转换:

「分布式」基础 - Multi Paxos, Fast Paxos 与现实世界产生共振

民主 - 专治

第一次公平竞争,选出更高、更快、更强的Proposer,选出后,就都以TA为中心,拥护优秀的领导者。民主会充分发挥大家的主观能动性,但和专治相比,多次协商会牺牲效率。专治在执行方面很直接,但又损失了能动性。那有没有两全其美的办法呢?

Fast Paxos

「分布式」基础 - Multi Paxos, Fast Paxos 与现实世界产生共振

Fast Paxos

与Multi Paxos相比,Fast Paxos做了以下调整:

  • 用户请求可以直达接收者。这样消除了领导者(Leader),这个瓶颈。领导者还是和之前一样,但更多的是负责协调,如上图所示,当接收者自己达成一致后,将会把信息反馈给领导者。
  • 学习者可以直接将响应结果返回给客户端,这样也会减少网络请求带来的不确定性,并提高了效率

如果接收者没法达成一致,领导者将会发现问题,并主动干预:

「分布式」基础 - Multi Paxos, Fast Paxos 与现实世界产生共振

Fast Paxos collision acceptor

如上图,如果客户端发了两个请求,接收者接到消息后,分别处理响应,但都势均力敌,有2个接收者优先响应了第一个请求,另2个接收者优先响应了第二个请求,结果是2对2,哪一组都说服不了另一组,这时候就需要领导者来主动干预了:

「分布式」基础 - Multi Paxos, Fast Paxos 与现实世界产生共振

Fast Paxos collision

这时领导者会像Multi Paxos中一样,直接propose一个TA认为合理的值,来解决这个冲突。

那么在这个过程中我们可以发现,为了避免这种争端,Fast Paxos建议领导者和接收者的组成公式为

3A + 1(以3为倍数的接收者,加一个领导者)。这样将有效避免接收者之前的冲突,他们自己就可以高效达成一致,这样就让领导者少操心。

人类的智慧是无限的,也是共享的,我们可以从上面这些理论算法的影子里,看到人类社会的分工和协作。下一篇我们将介绍鼎鼎有名的Zookeeper - ZAP协议,来看一看TA是如保将这些理念付诸实践的。

全文完

「分布式」基础 - Multi Paxos, Fast Paxos 与现实世界产生共振


分享到:


相關文章: