diff --git a/consensus/Paxos-history.md b/consensus/Paxos-history.md
index 66b539af..82592e67 100644
--- a/consensus/Paxos-history.md
+++ b/consensus/Paxos-history.md
@@ -10,13 +10,13 @@ Paxos 算法最初的论文名称为《The Part-Time Parliament》,翻译成
为了说明 Paxos 算法并增强演讲效果,Lamport 演讲中多次扮演《夺宝奇兵》中的主角印第安纳·琼斯。遗憾的是,Paxos 论文中采用的希腊民主议会的比喻显然不太成功。Lamport 像写小说一样,把一个复杂的数学问题写成了一篇带有考古色彩的历史小说,听众没有记住 Paxos 算法,仅仅记住了印第安纳·琼斯。
-1990 年,Lamport 将《The Part-Time Parliament》论文提交给学术期刊 TOCS。根据 Lamport 的本人的回忆[^1],TOCS 审稿人阅读后认为“这篇论文不怎么重要,但还有些意思”,并建议删掉与 Paxos 相关的故事背景。Lamport 对这些缺乏幽默感的审稿人颇为不爽,拒绝对论文进行修改。于是,论文的发表被搁置。
+1990 年,Lamport 将《The Part-Time Parliament》论文提交给 TOCS 期刊。根据 Lamport 的本人的回忆[^1],TOCS 审稿人阅读后认为“这篇论文不怎么重要,但还有些意思”,并建议删掉与 Paxos 相关的故事背景。Lamport 对这些缺乏幽默感的审稿人颇为不爽,拒绝对论文进行修改。于是,论文的发表被搁置。
-虽然论文没有发表,但不代表没有人关注这个算法,Bulter W.Lampson(1991 年图灵奖获得者)认识到这个算法的重要性,在他的论文《How to Build a Highly Availability System using Consensus》对 Paxos 进行了讲述。后来,De Prisco、Lynch 和 Lampson 几人又联合在《理论计算机科学》期刊发表了论文《Revisiting the PAXOS algorithm》对 Paxos 算法进行了详细地描述和证明。经过 Lampson 等人的大力宣传,Paxos 算法逐渐被学术界重视。
+虽然论文没有发表,但不代表没有人关注这个算法,Bulter W.Lampson(1991 年图灵奖获得者)认识到 Paxos 算法的重要性,在他的论文《How to Build a Highly Availability System using Consensus》对 Paxos 算法进行了讲述。后来,De Prisco、Lynch 和 Lampson 几人联合在《理论计算机科学》期刊发表了论文《Revisiting the PAXOS algorithm》对 Paxos 算法进行了详细地描述和证明。经过 Lampson 等人的大力宣传,Paxos 算法逐渐被学术界重视。
-另一方面,这些介绍 Paxos 论文的发表使 Lamport 觉得《The Part-Time Parliament》重新发表的时间到了。
+另一方面,这些介绍 Paxos 算法的论文使 Lamport 觉得《The Part-Time Parliament》重新发表的时间到了。
-或许作为玩笑的延续,或许为保留原有的工作,更直白的说法是 Lamport 认为论文内容的描述和证明足够清晰,根本不需要任何修改,这次论文的发布仅增加了一段编辑注解。有意思的是,编辑也在注解上也风趣了一把。
+或许作为玩笑的延续,或许为保留原有的工作,更直白的说法是 Lamport 认为论文描述和证明足够清晰,根本不需要任何修改,这次论文的发布仅增加了一段编辑的注解。有意思的是,编辑也风趣了一把。
:::tip
@@ -37,7 +37,7 @@ Paxos 算法最初的论文名称为《The Part-Time Parliament》,翻译成
图 6-4 《Paxos Made Simple》论文摘要
:::
-然而,这篇论文还是非常难以理解,引用斯坦福大学的学者 Diego Ongaro 和 John Ousterhout 设计 Raft 时发表的论文[^4]中对 Paxos 的描述:
+然而,这篇论文还是非常难以理解,引用斯坦福大学学者 Diego Ongaro 和 John Ousterhout 在设计 Raft 时的论文[^4]中对 Paxos 的描述:
:::tip 《In Search of an Understandable Consensus Algorithm》节选
@@ -57,4 +57,4 @@ we were not able to understand the complete protocol until after reading several
[^1]: 参见 https://lamport.azurewebsites.net/pubs/pubs.html#lamport-paxos
[^2]: 参见 https://lamport.azurewebsites.net/pubs/lamport-paxos.pdf
[^3]: 参见 https://lamport.azurewebsites.net/pubs/paxos-simple.pdf
-[^4]: 参见 https://raft.github.io/raft.pdf USENIX ATC 2013 年 best paper
+[^4]: 参见 https://raft.github.io/raft.pdf
diff --git a/consensus/Paxos.md b/consensus/Paxos.md
index 16cf9f99..d7edfed2 100644
--- a/consensus/Paxos.md
+++ b/consensus/Paxos.md
@@ -1,6 +1,7 @@
# 6.3 Paxos 算法
-Paxos 算法由 Leslie Lamport 于 1990 年提出,是一种基于消息传递、具备高度容错特性的共识算法,是当今分布式系统中最重要的理论基础,几乎就是“共识系统”的代名词。
+Paxos 算法由 Leslie Lamport[^1] 于 1990 年提出,是一种基于消息传递、具备高度容错特性的共识算法,是当今分布式系统中最重要的理论基础,几乎就是“共识系统”的代名词。
Paxos 算法因其复杂性而广为人知,围绕它发生过许多有趣的故事,这些已成为人们津津乐道的一段轶事。直接切入 Paxos 算法本身未免望文生畏,我们不妨从这段轶事开始学习 Paxos 算法之旅。
+[^1]: Lamport 在分布式系统理论方面有非常多的成就,比如 Lamport 时钟、拜占庭将军问题、Paxos 算法等等。除了计算机领域之外,其他领域的无数科研工作者也要成天和 Lamport 开发的一套软件打交道,目前科研行业应用最广泛的论文排版系统 —— LaTeX (名字中的 La 就是指 Lamport)
\ No newline at end of file
diff --git a/consensus/Replicated-State-Machine.md b/consensus/Replicated-State-Machine.md
index e654becd..de408b3d 100644
--- a/consensus/Replicated-State-Machine.md
+++ b/consensus/Replicated-State-Machine.md
@@ -4,7 +4,7 @@
这里的“日志“,并不是工程师熟悉的,通过 log4j 或者 syslog 输出的描述发生事情的文本。而是 MySQL 中的 binlog(Binary Log)、MongoDB 中的 Oplog(Operations Log)、Redis 中的 AOF(Append Only File)、PostgreSQL 中的 WAL(Write-Ahead Log)...。这些日志名字不同,但它们的全都是**只能追加、完全有序的记录序列**。
-图 6-1 展示了日志结构,日志是有序的、持久化的记录序列,日志以追加的方式在末尾添加记录,读取时则从左到右顺序扫描。
+图 6-1 展示了日志结构,日志是有序的、持久化的记录序列,日志在末尾追加记录,读取时则从左到右顺序扫描。
:::center
![](../assets/log.png)
图 6-1 日志是有序的、持久化的记录序列 [图片来源](https://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying)
diff --git a/consensus/consensus.md b/consensus/consensus.md
index b004f337..758a7c8f 100644
--- a/consensus/consensus.md
+++ b/consensus/consensus.md
@@ -1,15 +1,15 @@
# 6.1 什么是共识
-讨论 Paxos 或 Raft 时,很多文献使用“分布式一致性协议”或“分布式一致性算法”来描述这些技术。例如,Google Chubby 系统的作者 Mike Burrows 曾评价 Paxos:“There is only one consensus protocol...”,这一句话常被翻译为“世界上只有一种一致性算法”。
+业内讨论 Paxos 或 Raft 算法时,常使用“分布式一致性协议”或“分布式一致性算法”来描述。例如,Google Chubby 系统的作者 Mike Burrows 曾评价 Paxos:“There is only one consensus protocol...”,这一句话常被翻译为“世界上只有一种一致性算法”。
尽管“共识”和“一致”在汉语中含义相近,但在计算机领域,这两个术语具有截然不同的含义:
-- 共识(Consensus):指所有节点就某项操作(如选主、原子事务提交、日志复制、分布式锁管理等)达成一致的过程及其算法。
-- 一致性(Consistency):描述多个节点的数据是否保持一致,关注数据最终达到稳定状态的结果。
+- **共识**(Consensus):指所有节点就某项操作(如选主、原子事务提交、日志复制、分布式锁管理等)达成一致的过程及其算法。
+- **一致性**(Consistency):描述多个节点的数据是否保持一致,关注数据最终达到稳定状态的结果。
-因此,Paxos、Raft 和 ZAB 等算法应归类为“共识”算法,而 CAP 定理中的 C 和数据库 ACID 模型中的 C 则描述的是“一致性”问题。将 Paxos 等算法称为“共识算法”更为准确。
+Paxos、Raft 或者 ZAB 等算法研究的是达成一致的过程,CAP 定理中的 C 和数据库 ACID 模型中的 C 描述的是“一致性”状态问题。因此,将 Paxos 等算法归类到“共识算法”更准确。
-在分布式系统中,节点故障是不可避免的。为提高系统可靠性,可以通过增加节点数量,依据“少数服从多数”的原则确保系统在多数节点(n/2+1)正常工作的情况下仍能达成决策。这种通过多数节点(Quorum)保证系统容错性的机制被称为 Quorum 机制。
+在分布式系统中,节点故障是不可避免、什么都是不可靠的。为提高系统整体的可靠性,增加节点数量,依据“少数服从多数”的原则确保系统在多数节点(n/2+1)正常工作的情况下仍能达成决策。这种通过多数节点(Quorum)保证系统容错性的机制被称为 Quorum 机制。
:::tip Quorum 机制
@@ -21,7 +21,7 @@ Quorum 机制下,一个 N/2+1 节点个数的集群最多容忍 ⌊N/2⌋ 个
:::
-根据上述的讨论,以 Quorum 为基础,在充满不确定的环境下(如节点故障、网络不可靠、消息延迟或丢失),仍然能够协商出一致的决策,从而对外呈现出一致的运行结果,这个过程称为节点间”协商共识“。
+根据上述的讨论,以 Quorum 为基础,在充满不确定的环境下(如节点故障、网络不可靠、消息延迟或丢失),仍然能够协商出一致的决策,从而对外呈现出一致的运行结果,这个过程称为节点间”达成共识“。
一旦解决了共识问题,就能提供一套屏蔽内部复杂问题的抽象机制,为应用层提供一致性保证,满足多种目标需求,例如:
- **主节点选举**:对于一个主从复制的数据库,所有的节点需要就“谁来当主节点”达成一致。如果由于网络问题出现节点间无法通信,很容易出现争议。不解决争议问题,就会出现多个节点同时认为自己是主节点,也就是出现分布式系统中最头疼的情况 —— “脑裂”。
@@ -30,4 +30,3 @@ Quorum 机制下,一个 N/2+1 节点个数的集群最多容忍 ⌊N/2⌋ 个
- **日志复制**:日志复制是指将主节点的“操作日志”复制到从节点。日志条目的顺序必须在所有节点上形成一致,即日志条目需要按相同的顺序被写入(“顺序”相当重要,笔者将在下一节介绍)。
-[^2]: Lamport 在分布式系统理论方面有非常多的成就,比如 Lamport 时钟、拜占庭将军问题、Paxos 算法等等。除了计算机领域之外,其他领域的无数科研工作者也要成天和 Lamport 开发的一套软件打交道,目前科研行业应用最广泛的论文排版系统 —— LaTeX (名字中的 La 就是指 Lamport)
\ No newline at end of file