11
11
12
12
## Paxos 算法介绍
13
13
14
- Paxos 算法是 Leslie Lamport([ 莱斯利·兰伯特] ( https://zh.wikipedia.org/wiki/莱斯利·兰伯特 ) )在 ** 1990** 年提出了一种分布式系统共识算法 。
14
+ Paxos 算法是 Leslie Lamport([ 莱斯利·兰伯特] ( https://zh.wikipedia.org/wiki/莱斯利·兰伯特 ) )在 ** 1990** 年提出了一种分布式系统 ** 共识 ** 算法。这也是第一个被证明完备的共识算法(前提是不存在拜占庭将军问题,也就是没有恶意节点) 。
15
15
16
- > 很多人会误把 Paxos 看作是一致性算法。
17
- >
18
- > ⚠️注意:** Paxos 不是一致性算法而是共识算法,一致性和共识并不是一个概念。**
16
+ 为了介绍 Paxos 算法,兰伯特专门写了一篇幽默风趣的论文。在这篇论文中,他虚拟了一个叫做 Paxos 的希腊城邦来更形象化地介绍 Paxos 算法。
19
17
20
- 为了介绍 Paxos 算法,兰伯特专门写了一篇幽默风趣的论文。在这篇论文中,他虚拟了一个叫做 Paxos 的希腊城邦来更形象化地介绍 Paxos 算法。 不过,审稿人可不觉得论文太幽默是一件好事 ,他们就给兰伯特说:“如果你想要成功发表这篇论文的话,必须删除所有 Paxos 相关的故事背景”。兰伯特一听就不开心了:“我凭什么修改啊,你们这些审稿人就是缺乏幽默细胞,发不了就不发了呗!”。
18
+ 不过,审稿人并不认可这篇论文的幽默。于是 ,他们就给兰伯特说:“如果你想要成功发表这篇论文的话,必须删除所有 Paxos 相关的故事背景”。兰伯特一听就不开心了:“我凭什么修改啊,你们这些审稿人就是缺乏幽默细胞,发不了就不发了呗!”。
21
19
22
20
于是乎,提出 Paxos 算法的那篇论文在当时并没有被成功发表。
23
21
24
- 直到 1998 年,系统研究中心 (Systems Research Center,SRC)的两个大佬需要找一些合适的算法来服务他们正在构建的分布式系统 ,Paxos 算法刚好可以解决他们的部分需求。因此,兰伯特就把论文发给了他们。在看了论文之后,这俩大佬觉得论文还是挺不错的。于是,兰伯特在 ** 1998** 年重新发表论文 [ 《The Part-Time Parliament》] ( http://lamport.azurewebsites.net/pubs/lamport-paxos.pdf ) 。
22
+ 直到 1998 年,系统研究中心 (Systems Research Center,SRC)的两个技术研究员需要找一些合适的分布式算法来服务他们正在构建的分布式系统 ,Paxos 算法刚好可以解决他们的部分需求。因此,兰伯特就把论文发给了他们。在看了论文之后,这俩大佬觉得论文还是挺不错的。于是,兰伯特在 ** 1998** 年重新发表论文 [ 《The Part-Time Parliament》] ( http://lamport.azurewebsites.net/pubs/lamport-paxos.pdf ) 。
25
23
26
- 论文发表之后,各路学者直呼看不懂,言语中还略显调侃之意。这谁忍得了,在 ** 2001** 年的时候,兰伯特又写了一篇 [ 《Paxos Made Simple》] ( http://lamport.azurewebsites.net/pubs/paxos-simple.pdf ) 的论文来简化对 Paxos 的介绍,主要讲述两阶段共识协议部分。
24
+ 论文发表之后,各路学者直呼看不懂,言语中还略显调侃之意。这谁忍得了,在 ** 2001** 年的时候,兰伯特专门又写了一篇 [ 《Paxos Made Simple》] ( http://lamport.azurewebsites.net/pubs/paxos-simple.pdf ) 的论文来简化对 Paxos 的介绍,主要讲述两阶段共识协议部分,顺便还不忘嘲讽一下这群学者 。
27
25
28
- 这篇论文就 14 页,相比于 《The Part-Time Parliament》的33 页精简了不少。最关键的是这篇论文的摘要就一句话:
26
+ 《Paxos Made Simple》 这篇论文就 14 页,相比于 《The Part-Time Parliament》的33 页精简了不少。最关键的是这篇论文的摘要就一句话:
29
27
30
28
![ ] ( ./images/paxos/paxos-made-simple.png )
31
29
@@ -42,7 +40,7 @@ Paxos 算法是 Leslie Lamport([莱斯利·兰伯特](https://zh.wikipedia.org
42
40
43
41
由于 Paxos 算法在国际上被公认的非常难以理解和实现,因此不断有人尝试简化这一算法。到了2013 年才诞生了一个比 Paxos 算法更易理解和实现的共识算法—[ Raft 算法] ( https://javaguide.cn/distributed-system/theorem&algorithm&protocol/raft-algorithm.html ) 。更具体点来说,Raft 是Multi-Paxos的一个变种,其简化了 Multi-Paxos 的思想,变得更容易被理解以及工程实现。
44
42
45
- Paxos是第一个被证明完备的共识算法(前提是不存在拜占庭将军问题,也就是没有恶意节点) ,除了 Raft 算法之外,当前最常用的一些共识算法比如 ZAB 协议、 Fast Paxos 算法都是基于 Paxos 算法改进的。
43
+ 针对没有恶意节点的情况 ,除了 Raft 算法之外,当前最常用的一些共识算法比如 ZAB 协议、 Fast Paxos 算法都是基于 Paxos 算法改进的。
46
44
47
45
针对存在恶意节点的情况,一般使用的是工作量证明(POW,Proof-of-Work)、权益证明(PoS,Proof-of-Stake )等共识算法。这类共识算法最典型的应用就是区块链,就比如说前段时间以太坊官方宣布其共识机制正在从工作量证明(PoW)转变为权益证明(PoS)。
48
46
@@ -56,6 +54,10 @@ Paxos是第一个被证明完备的共识算法(前提是不存在拜占庭将
56
54
57
55
## 一致性(Consistency)与共识(Consensus)
58
56
57
+ 很多人会误把 Paxos 看作是一致性算法,这其实是一个非常大的误区。
58
+
59
+ ⚠️注意:** Paxos 不是一致性算法而是共识算法,一致性和共识并不是一个概念。**
60
+
59
61
60
62
61
63
## Basic Paxos 算法
0 commit comments