一个篮子装不下所有的鸡蛋,那么就多用几个篮子来装。
:::right
—— 分布式系统的基本思想。
:::
分布式系统存在太多可能出错的场景了,网络数据包可能会丢失、顺序紊乱,重复发送或者延迟,节点还可能宕机。
分布式系统中最重要的抽象之一就是共识。共识是所有的节点就某一项提议达成一致。
本章我们讨论如何在无序、冲突和不可靠的网络环境下实现分布式共识,共识是确保所有节点对某个决策达成一致的关键,如何实现共识是软件工程领域中最具挑战的难题之一。
这一章,我们知难而上,从解决问题的角度理解什么是共识,沿着 Paxos 论文讨论如何建立共识,再以工程实践为目的学习 Raft 的设计思路。最后,理解了这些问题以及共识算法的解题思路,自然能体会到 etcd、consul 以及各类分布式容错系统的设计原理,以及领悟到构建大规模分布式系统的要素。
:::center
图 6-0 本章内容导图
:::