共识算法是分布式系统中确保所有节点对某一状态或数据达成一致的机制,尤其在存在故障或网络延迟时保证系统的一致性和可靠性。以下是核心要点:
1. 核心目标
-
一致性:所有正确节点最终认同相同的结果。
-
容错性:允许部分节点故障或网络分区仍能工作。
-
终局性:系统最终能达成一致,避免无限循环。
2. 常见类型
-
非拜占庭容错(故障节点不恶意):
-
Paxos:经典算法,保证多数派达成一致(如Chubby、ZooKeeper)。
-
Raft:简化版Paxos,通过选举领导者(Leader)管理日志复制(如Etcd、Kubernetes)。
-
拜占庭容错(节点可能恶意):
-
PBFT:适用于少数恶意节点的联盟链(如Hyperledger Fabric)。
-
PoW(工作量证明):通过算力竞争达成共识(如比特币)。
-
PoS(权益证明):按持币比例选择验证者(如以太坊2.0)。
3. 关键挑战
-
网络延迟:消息可能丢失或乱序。
-
节点故障:需区分崩溃故障与恶意行为。
-
性能权衡:一致性越强,吞吐量通常越低(如CAP定理)。
4. 应用场景
-
区块链:PoW/PoS确保去中心化账本一致。
-
分布式数据库:Paxos/Raft保证数据副本同步。
-
云计算:协调微服务或容器调度。
5. 示例
-
比特币的PoW:矿工竞争解数学题,最长链为共识。
-
Raft选举:Leader崩溃后,剩余节点投票选出新Leader。
共识算法是分布式系统的基石,选择取决于场景需求(如效率、安全性、去中心化程度)。