学习Raft共识算法基本原理

发布于:2025-05-25 ⋅ 阅读:(20) ⋅ 点赞:(0)

Raft 是一种易于理解的分布式共识算法,由 Diego Ongaro 和 John Ousterhout 在 2014 年提出,旨在替代更复杂的 Paxos 算法。以下是学习 Raft 的基本资料和核心原理总结:


1. 核心论文与官方资料


2. Raft 基本原理

核心目标

在分布式系统中,多个节点通过共识达成一致的数据状态,即使部分节点故障也能保证系统可用。

关键机制
  1. 领导者选举(Leader Election)

    • 节点分为三种角色:Leader(领导者)、Follower(跟随者)、Candidate(候选者)。

    • 通过心跳机制检测 Leader 存活。若 Follower 超时未收到心跳,会转变为 Candidate 发起选举。

    • 选举规则:

      • Candidate 向其他节点发送投票请求。

      • 获得多数派(N/2+1)投票的节点成为新 Leader。

      • 每个任期(Term)只能有一个 Leader(避免脑裂)。

  2. 日志复制(Log Replication)

    • 所有写请求由 Leader 处理,并追加到本地日志中。

    • Leader 将日志条目(Log Entry)同步到其他节点,收到多数派确认后提交(Commit)日志。

    • 已提交的日志会被应用到状态机(State Machine),实现数据一致性。

  3. 安全性(Safety)

    • 选举限制:只有包含最新日志的节点才能成为 Leader。

    • 提交规则:Leader 只能提交当前任期的日志(避免旧日志被错误提交)。


3. 学习资源推荐


4. 对比其他共识算法

  • Raft vs Paxos
    Raft 通过强领导者模型和明确的状态划分,降低了理解难度,而 Paxos 更抽象且难以工程化。

  • Raft vs Zab(ZooKeeper)
    Zab 是为 ZooKeeper 设计的,强调顺序一致性,而 Raft 更通用。


通过上述资料和原理总结,你可以快速掌握 Raft 的核心思想。建议先阅读论文第 1-5 章,再结合动画和代码实践加深理解。


网站公告

今日签到

点亮在社区的每一天
去签到