分布式系统中的一致性问题是计算机科学最历史悠久的难题之一。Paxos虽然在理论上证明了分布式共识的可行性,但其实现复杂度逺使大多数工程团队未能真正落地。2014年Stanford的Ongaro和Di Ongaro提出Raft算法,以“相对可理解性”为核心设计理念,将分布式共识分解为三个相对独立的子问题:领导者选举、日志复制与安全性。Raft已成为现代分布式系统核心存储层的事实标准,etcd、TiKV、Consul、CockroachDB等全球级系统皆基于其构建。
本文将完整深入Raft各个细节,涵盖领导者选举实现、RCP复制机制、安全性约束、状态机落地、集群成员变更和快透优化,并通过实战代码和性能数据帮助读者从理论踏到工程落地。
一、Raft理论基础
Raft采用强领导者(Strong Leader)模式,所有对状态机的操作都经过Leader处理。这种设计大大简化了日志管理的复杂度。每个节点在任何时刻处于以下三种状态之一:
- Leader:处理所有客户端请求,发送AppendEntries(必有日志次止)
- Follower:被动响应Leader和Candidate的RPC
- Candidate:用于领导者选举阶段
Term(任期)是Raft的时钟技巧,每个Term自增1,且每个节点记录当前的currentTerm。节点间通过每次RPC交换Term实现“过期检测”:收到更大Term的请求立即降为Do Follower;收到更小Term则撤销请求。这种机制快速清除脚末中的“僵尸Leader”。
二、领导者选举机制
当Follower在选举超时(Election Timeout)内未收到Leader的AppendEntries,便转为Candidate并发起选举。选举流程如下:
- 5增currentTerm,自计票
- 54

发表评论 取消回复