最初并不能很好的理解 Paxos,大概是因为对于这个算法先入为主的理解,包括它要解决什么问题以及解决到什么程度。


讲述 Paxos 的文章很多,不少人都说算法抽象晦涩难以理解。其实并没有, In fact, it is among the simplest and most obvious of distributed algorithms.

我最开始认为他解决的问题是例如 客户端向一组服务器发送命令,在某一台宕机的情况下,其它服务器的依然能够按顺序执行这些命令。然而问题并没有那么复杂,就仅仅是在有多个角色提出多个值的情况下,大家都认同其中一个值(不论是哪一个都可以)。

另外这个算法不是对于 2PC 和 3PC 的改进,这两种协议保证的是分布事务一致性,和分布式系统的一致性说的不是一回事。不应该通过理解 2PC 或者 3PC 进而理解 Paxos。

多轮投票确认一个值,中间可能有失败的投票,也可能有多轮重复确认一个值,并不是说走完两段流程就可以达成一致。这一点在 The Part-Time Parliament 用表格表现的很清楚。 而且在两段流程结束后,还需要其他的角色来确认达成了一致,并结束这一组投票。

另外如果要实现这个算法,还需要很多改进,并且根据实际情况补充细节。例如上边所说的状态机实现。

  • No labels