什么是 Raft?
Raft 是一种为了管理复制日志的共识算法,由 Diego Ongaro 和 John Ousterhout 在 2013 年设计。它的主要目标是提供一个更容易理解的共识算法,同时保持与 Paxos 算法相同的可靠性和性能。
ETCD、Consul 等知名的分布式系统都采用了 Raft 算法作为其共识机制。
Raft 的核心概念
Raft 将共识问题分解为三个相对独立的子问题:
- 领导者选举(Leader Election):当现有领导者失效时,必须选出一个新的领导者
- 日志复制(Log Replication):领导者必须从客户端接收日志条目,并将它们复制到集群中的其他服务器
- 安全性(Safety):如果任何服务器已经应用了一个特定的日志条目到其状态机,那么其他服务器不能在同一个日志索引位置应用不同的命令
大约 5 分钟