Skip to content

Commit

Permalink
更新 Paxos 算法
Browse files Browse the repository at this point in the history
  • Loading branch information
isno committed Nov 2, 2023
1 parent 212db66 commit 88b8726
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 5 deletions.
9 changes: 5 additions & 4 deletions consensus/Paxos.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
# 5.3 Paxos 的起源

Paxos 是由 Leslie Lamport[^1] 于 1990 提出的一种基于消息传递且具有高度容错特性的协商共识算法,是当今分布式系统最重要的理论基础,几乎就是“共识”两个字的代名词。
Paxos 是由 Leslie Lamport 于 1990 提出的一种基于消息传递且具有高度容错特性的协商共识算法,是当今分布式系统最重要的理论基础,几乎就是“共识”两个字的代名词。

Paxos 最初的论文名称为 《The Part-Time Parliament》,翻译成中文就是“兼职会议”,如果不事先说明,也许你根本不会认识到这一篇关于分布式的论文。Lamport 写这篇论文时,采用了一个虚构的古希腊岛屿(岛屿名称 Paxos,这也是 Paxos 算法名称的来源)上发生的故事来描述这个算法,不幸的是 Paxos 论文中采用希腊民主议会的比喻很明显失败了(不过 Lamport 的另一篇论文 《The Byzantine General Problem》也采用了同样的写作风格,被人们广泛接受),Lamport 像写小说一样,把一个复杂的数学问题弄成了一篇带有考古色彩的历史小说。
Paxos 最初的论文名称为 《The Part-Time Parliament》,翻译成中文就是“兼职会议”,如果不事先说明,也许你根本不会认识到这一篇关于分布式的论文。Lamport 写这篇论文时,采用了一个虚构的古希腊岛屿(岛屿名称 Paxos,这也是 Paxos 算法名称的来源)上发生的故事来描述这个算法。为了说明这个算法,Lamport 做了几次演讲,在演进中 Lamport 扮演了《夺宝奇兵》中印第安纳·琼斯风格的考古学家,为了逼真 Lamport 还带上了与电影角色同款的牛仔毡帽。不幸的是 Paxos 论文中采用希腊民主议会的比喻很明显失败了,Lamport 像写小说一样,把一个复杂的数学问题弄成了一篇带有考古色彩的历史小说。听众没有记住 Paxos 算法,仅仅记住了印第安纳·琼斯。

根据 Lamport 自己的描述[^2],三个审稿者都认为该论文虽然不怎么重要但还有些意思,只是应该把其中所有 Paxos 相关的故事背景删掉。Lamport 对这些缺乏幽默感的人感到生气,所以他不打算对论文做任何修改。
1990 年,Lamport 将这篇论文提交给 TOCS。根据 Lamport 自己的描述[^2],TOCS 的三个审稿人看过 Lamport 的论文后认为“该论文虽然不怎么重要但还有些意思,只是应该把其中所有 Paxos 相关的故事背景删掉”。Lamport 对这些缺乏幽默感的人颇为不爽,他不打算对论文做任何修改,从而论文的发表被搁置。

虽然论文没有发表,但并不代表没有人关注这个算法。Bulter W.Lampson(该大佬是 1991年 图灵奖获得者)认识到这个算法的重要性

多年后,两个在 SRC(Systems Research Center,DEC 于 1984 年创立,Lamport 也曾在此工作过)工作的人需要为他们正在构建的分布式系统寻找一些合适算法,而 Paxos 恰恰提供了他们想要的。Lamport 就将论文发给他们,他们也没觉得该论文有什么问题。因此,Lamport 觉得论文重新发表的时间到了,《The Part-Time Parliament》[^3] 最终在 1998 年公开发表。

Expand All @@ -21,7 +23,6 @@ Paxos 最初的论文名称为 《The Part-Time Parliament》,翻译成中文

直到 Google 的 Chubby 横空出世,使用 Paxos 解决了分布式共识的问题,并将其整理成正式的论文发表之后,得益于 Google 的行业影响力,辅以 Chubby 作者 Mike Burrows 那略显夸张但足够吸引眼球的评价推波助澜,Paxos 逐渐被大家熟知和认可。Lamport 凭借他在分布式领域的贡献,最终于 2013 年获得图灵奖。

[^1]: Lamport 在分布式系统理论方面有非常多的成就,比如 Lamport 时钟、拜占庭将军问题、Paxos 算法等等。除了计算机领域之外,其他领域的无数科研工作者也要成天和 Lamport 开发的一套软件打交道,目前科研行业应用最广泛的论文排版系统 -- LaTeX (名字中的 “La” 就是指 Lamport)。
[^2]: 参见 https://lamport.azurewebsites.net/pubs/pubs.html#lamport-paxos
[^3]: 参见 https://lamport.azurewebsites.net/pubs/lamport-paxos.pdf
[^4]: 参见 https://lamport.azurewebsites.net/pubs/paxos-simple.pdf
2 changes: 1 addition & 1 deletion consensus/The-Byzantine-General-Problem.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ Lamport 认为“故事让问题变得欢迎”,因此他在提出观点和问

签名消息型解决方案下,无论叛徒如何捣乱,将军 A、B都能执行一致的作战计划,需要注意,签名消息的拜占庭将军问题之解,也是需要 m+1(m为叛将数量)轮协商。我们也可以从另外一个角度理解:n 位将军,能容忍(n-2)为叛将。

最后,签名消息型拜占庭问题之解,解决的是忠将门如何就作战计划达成共识的问题,它不关心现实问题,没有与实际场景结合,比如在合适进攻的时候,忠将们执行的作战计划却是撤退。如果要选择落地的方案,我们可以考虑改进后的拜占庭容错算法,比如 PBFT 算法。
最后,签名消息型拜占庭问题之解,解决的是忠将们如何就作战计划达成共识的问题,它不关心现实情况,不与实际场景结合,比如在合适进攻的时候,忠将们执行的作战计划却是撤退。如果要选择落地的方案,我们可以考虑改进后的拜占庭容错算法,比如 PBFT 算法。

## 5. 拜占庭容错算法与非拜占庭容错算法

Expand Down
1 change: 1 addition & 0 deletions consensus/consensus.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@

解决问题的前提是正确认识问题,正确认识问题需要合适的理论。毫无疑问,认识共识,从 Leslie Lamport 1982 年发表的论文 《The Byzantine General Problem》(拜占庭将军问题)开始最恰达不过。拜占庭将军问题是分布式领域最复杂的一个容错模型,一旦搞懂了它,我们就能掌握分布式共识问题解决的思路,还能更深刻地理解常见的共识算法。

Lamport 在分布式系统理论方面有非常多的成就,比如 Lamport 时钟、拜占庭将军问题、Paxos 算法等等。除了计算机领域之外,其他领域的无数科研工作者也要成天和 Lamport 开发的一套软件打交道,目前科研行业应用最广泛的论文排版系统 -- LaTeX (名字中的 “La” 就是指 Lamport)

0 comments on commit 88b8726

Please sign in to comment.