共识算法是分布式系统的基石。它的目标是:在保证容错性和可用性的前提下,让多个节点就某件事(如数据状态、日志顺序)达成一致。
核心挑战
在分布式环境下,达成共识面临诸多挑战:
- 网络不可靠:延迟、丢包、乱序。
- 节点故障:宕机、重启。
- 恶意行为:节点伪造信息(拜占庭故障)。
关键概念
为了理解共识算法,需要先掌握以下基础概念:
- 多数派 (Quorum):达成共识的数学基础。
- 脑裂 (Split Brain):共识失效的典型表现。
- 拜占庭故障 (Byzantine Fault):最复杂的故障模型。
典型算法
根据对故障的容忍程度,共识算法分为两大类:
故障容错 (CFT)
假设节点只会宕机,不会说谎。
- Paxos:共识算法的鼻祖。
- Raft:更易于理解和实现的工业级标准。
拜占庭容错 (BFT)
假设节点可能会恶意造假。
- PBFT:实用的拜占庭容错算法。
- PoW / PoS:区块链中使用的共识机制。