6.1 什么是共识 受翻译影响,网上讨论 Paxos 或 Raft 的内容多使用“分布式一致性协议”或者“分布式一致性算法”这样的描述。如 Google Chubby 系统的作者 Mike Burrows,他对 Paxos 的评价原话是:“There is only one consensus protocol...”,很多文章翻译成“世界上只有一种一致性算法...”。 虽然“共识”和“一致”在汉语中含义相近,但在计算机领域它们有明显的差异: 共识(consensus):所有的节点就某一项提议(如选举、原子事务提交、日志复制、分布式锁等)达成一致的过程及其算法; 一致(consistency):描述多个节点中存储的数据之间不自相矛盾,侧重于数据最终达成稳定状态的结果。
受翻译影响,网上讨论 Paxos 或 Raft 的内容多使用“分布式一致性协议”或者“分布式一致性算法”这样的描述。如 Google Chubby 系统的作者 Mike Burrows,他对 Paxos 的评价原话是:“There is only one consensus protocol...”,很多文章翻译成“世界上只有一种一致性算法...”。
虽然“共识”和“一致”在汉语中含义相近,但在计算机领域它们有明显的差异:
Paxos、Raft、ZAB 等等属于 consensus 算法,明显使用“共识”描述更准确,而 CAP 定理中的 C 和数据库 ACID 的 C 才是真正的“一致性” —— consistency 问题。
在充满不确定性的环境中(如节点故障、网络不可靠、消息延迟或丢失、顺序错乱...)可靠地达成共识是一件非常了不起的事情。一旦解决了共识问题,就能为分布式应用提供一套屏蔽内部复杂问题的抽象机制,满足应用层的很多目标需求。例如:
Lamport 在分布式系统理论方面有非常多的成就,比如 Lamport 时钟、拜占庭将军问题、Paxos 算法等等。除了计算机领域之外,其他领域的无数科研工作者也要成天和 Lamport 开发的一套软件打交道,目前科研行业应用最广泛的论文排版系统 —— LaTeX (名字中的 La 就是指 Lamport)