Raft 共识算法在 `AppendEntries` RPC 过程

Raft 共识算法在 AppendEntries RPC 过程中只要求“多数派”节点返回 Ack(确认)而不是全部节点的设计,是出于对 可用性、一致性与容错能力之间权衡的考虑。这是 Raft 实现强一致性和高可用性的核心机制之一。


🌟 总结回答:

Raft 使用“多数派确认”机制,是为了在不依赖所有节点都存活的前提下,实现线性一致性(Linearizability)。只要有超过一半的节点对日志条目达成一致,就认为该日志是安全的并可提交,从而确保在任意网络分区和节点故障下仍保持正确性和进展性


📌 原因详解

1. ✅ 一致性保障:多数派原则确保唯一合法提交

  • Raft 要求任何一次提交,必须得到多数节点的确认(N 个节点中至少 ⌊N/2⌋ + 1 个)。

  • 因为任意两个多数派集合至少有一个交集节点,这个交集节点可以作为“共同记忆”,避免出现脑裂。

    例:在 5 个节点中(A、B、C、D、E),任意三个节点构成多数派。A、B、C 和 C、D、E 的多数派交集是 C,能同步日志信息,维持一致性。

在这里插入图片描述

2. 💡 容错性设计:不依赖所有节点都存活

  • 如果要求“所有节点 Ack”,只要有 1 个节点掉线,系统就无法提交日志,变成了“等待所有人同意” → 不可用。

  • 使用多数派,只要不过半节点宕机,系统仍能选主、继续写入。

    这符合分布式系统的“CAP 理论”,Raft 选择了 C(一致性)和 A(可用性),牺牲了 P(分区容忍性)的一小部分精度换取更强的一致性。

3. 🚫 等待所有节点会导致不必要的阻塞

  • 真实环境中,网络延迟或慢节点经常出现,某些 follower 会比别人慢很多(称为“慢节点”)。
  • 如果必须等待所有节点,慢节点也必须等完 → 系统吞吐大幅下降。

多数派允许这些“慢节点”落后,只要多数 follower 同步即可。


✅ Raft 中日志提交的条件

Leader 提交日志的必要条件是:

  1. 日志条目已复制到多数派节点;
  2. 该日志条目属于当前任期(currentTerm);
  3. Leader 才可将日志标记为已提交,并通知 follower 应用该条目。

这称为 Raft 的日志提交规则(参考论文第5.4节 “Safety”)。

在这里插入图片描述


📖 参考依据与权威资料

📘 1. 《In Search of an Understandable Consensus Algorithm (Raft)》原论文

  • 链接:https://raft.github.io/raft.pdf

  • 第 5.4 节原文摘录:

    “Raft never commits log entries from previous terms by counting replicas. Only log entries from the leader’s current term are committed in this way. This rule maintains the invariant that a leader never overwrites or deletes entries in its log once they are committed.”

📗 2. Raft 官方文档:

📘 3. 《分布式系统:原理与范型(Tanenbaum)》

  • 在一致性算法一章中,明确说明了“多数派”的作用就是为了避免全体等待并保证系统继续运行。

✅ 总结回顾

点位原因
📌 多数派具备交集性,防止脑裂任意两个多数派有交集,确保一致性
⚙️ 提高可用性少数 follower 故障不影响提交
⏱️ 减少等待延迟不阻塞于网络慢节点
🧠 符合 CAP 理论保证 C(强一致)与 A(高可用)

如需进一步理解,可以结合动画演示(如 thesecretlivesofdata.com/raft)或阅读 Raft 的 Go 实现(如 etcd 的 rafthttp 模块)。

如果你希望进一步探究“follower 崩溃后重新加入如何 catch up”、或“split-brain 怎么防止”,我也可以详细展开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值