共识算法
想象一个场景:三个数据库节点要选出一个主节点来处理写入请求,或者五台服务器要对某个值达成一致(无论这个值是「是否执行分库迁移」还是「这笔订单是否有效」)。在网络可能延迟、节点可能宕机的环境下,如何让它们最终做出相同的决定?
这就是共识算法要解决的问题。共识(Consensus) 是分布式系统皇冠上的明珠——解决了它,上面那一层「分布式事务」「分布式锁」「服务发现」才能成立。
Paxos 是共识算法的鼻祖,由 Leslie Lamport 在 1998 年提出,但因其复杂性被很多人认为是「理论上优美、工程上难用」的代名词。Raft 是 2014 年诞生的后起之秀,通过更强的可理解性设计,成为了工程界的主流选择。
本模块将深入讲解 Paxos、Raft、ZAB 这三种最重要的共识算法,以及它们在 etcd、Consul、ZooKeeper 等生产系统中的实践。