前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Paxos 为什么难以理解?

Paxos 为什么难以理解?

作者头像
并发笔记
发布2022-11-21 20:17:41
3390
发布2022-11-21 20:17:41
举报
文章被收录于专栏:并发笔记并发笔记并发笔记

这是个好问题,我很喜欢回答这类问题。因为国内对共识算法的印象都是难以学习,难以实现,而事实上并非如此。

Paxos算法本身就是几轮消息交互的事情,理解起来能有多难?真正理解Paxos算法的设计思路以及设计选择,这的确并非易事,而这是Lamport的工作,并不是入门Paxos需要关心的事情。所以不要携带太重的负担学习Paxos。

为什么对Paxos误解如此之深?

Paxos难以理解这个观点,来源于两个方面:

  1. Lamport提交给ACM(TOCS)的《The Part-Time Parliament》论文未通过。
  2. Lamport在一些视频(TLA+课程、访谈等)中提及Paxos并不是一个简单的算法。

事实上,对于这两个事件,我们对其理解的有些片面。ACM委员会拒绝《The Part-Time Parliament》论文,流传的有两个原因:

  1. Lamport以故事的形式描述Paxos不严谨。
  2. ACM委员会未能理解Paxos算法。

很多时候,我们都只关心了第2个原因,却没有考虑第2个原因是不是第1个原因导致的。这一点在后续发表的《Paxos Made Simple》论文中可以看出,Paxos并不复杂。而第2个原因的流传,使得我们对Paxos的误解颇深。

另外,Lamport在一些视频中提及Paxos并不是一个简单的算法,这一点个人认为Lamport想表达的是Paxos的设计思路,推导过程是一件困难的事情,而并非算法本身。

既然简单,为什么Paxos难学习

Paxos难以学习这个问题,也可以总结几个方面:

  1. 大部分论文都是国外发表的。
  2. 没有详细的实现论文。
  3. Basic-Paxos与Multi-Paxos区分不明确。

第1点,除了英语的学习门槛之外,还有国内外对问题的阐述习惯有所区别,这一点也增加了学习门槛。

第2点,我并不是说没有详细的介绍论文,而是没有详细的编程细节论文。在《Paxos Made Simple》论文中,对Paxos的协商过程、推导过程、证明过程都很详细了,但是在编程实现的细节方面并没有权威论文,实现过程中,能借鉴的只有Google对Chubby的实现文章。不能大规模实现,自然也没有这方面紧迫的人才需求,也导致Paxos学习受阻。

这里可以总结一些如何做好一个技术产品,首先要有官方的实现方案,其次要提供大量可扩展的点,使得更多的用户参与进来,用户自然会推广自己所实现的功能,这一点Paxos很好,导致后来共识算法的蓬勃发展,后来的诞生了许多变种,例如:Disk Paxos、Cheap Paxos、Fast Paxos、Vertical Paxos等。另外还需要有大量的人才缺口,这样才会有更多的人学习。

第3点,在《Paxos Made Simple》论文中,Lamport提到了优化Basic-Paxos的方案,即Multi-Paxos。这些内容在同一篇论文中,导致两个问题。一是,读者对Multi-Paxos定义不明,把Multi-Paxos难以理解也归于Basic-Paxos身上。二是,Multi-Paxos篇幅过短,让读者产生许多过度解读的内容。

庆幸的事

接着要介绍一件不要脸的事。看到共识领域面临的问题,而我自己也比较喜欢共识算法,所以经过许多大佬的帮助,完成了一本《深入理解分布式共识算法》的书,本书介绍了:2PC、3PC、Paxos、Raft、Raft、ZAB、Disk Paxos、Cheap Paxos、Mencius、Vertical Paxos、Fast Paxos、EPaxos等,几乎涵盖了现在流行的共识算法,给出学习共识算法的roadmap,并且本书配套了视频、以及相关权威产品的源码解读。

值得期待的是,本书将于今年12月出版。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 并发笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么对Paxos误解如此之深?
  • 既然简单,为什么Paxos难学习
  • 庆幸的事
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档