1. Raft 协议的核心机制?(必考)

角色:Leader(处理写入)、Follower(被动复制)、Candidate(选举中)。任期 term 递增。

三大机制:

  1. Leader 选举:
    • Follower 超时未收到心跳(election timeout,随机 150~300ms)→ 变 Candidate 自增 term 投票
    • 获得大多数(过半)选票成为 Leader;平票则随机超时再选
    • 过半机制保证:一个任期内最多一个 Leader(每张票只投一次)
  2. 日志复制:
    • 客户端写请求 → Leader 追加日志 → 复制到 Follower → 过半确认后提交并返回成功
    • 日志带任期和索引,Follower 检查连续性(prevLogIndex/prevLogTerm)——保证日志一致
  3. 安全性:
    • 选举限制:Candidate 的日志必须"足够新"(最后一条日志的任期/索引)才有资格当选
    • 提交限制:Leader 不能提交旧任期的日志(只有当前任期的日志过半才提交,顺带提交之前未提交的)

🎯 面试要点

  • Raft 的选票"先到先得 + 每任期一票"是单 Leader 的保证
  • 过半 = 多数派:3 节点容忍 1 宕机,5 节点容忍 2 宕机(容错 = (n-1)/2)
  • 应用:ETCD(配置中心/锁)、Consul、RocketMQ DLedger、Kafka KRaft

2. ZAB 协议(ZooKeeper)与 Raft 的异同?

ZAB(ZooKeeper Atomic Broadcast):ZooKeeper 的原子广播协议,三个角色:Leader / Follower / Observer。两大阶段:

  1. 崩溃恢复:Leader 挂了 → 选举新 Leader → 同步数据(新 Leader 与 Follower 对齐未提交事务)
  2. 消息广播:写请求 → Leader 以 zxid(事务 ID)排序广播 → 过半 ack → 提交

与 Raft 对比:

🎯 面试要点

  • ZooKeeper 的 ZNode 临时节点 + watch 机制 → 分布式锁/配置中心/注册中心
  • zxid 前半部分(epoch)防"旧 Leader 复活篡权"
  • ZooKeeper 是 CP 系统:分区时牺牲可用性保一致性

3. Paxos 和 Gossip 协议?

🎯 面试要点

  • 对比:Raft/Paxos 是强一致(CP),Gossip 是最终一致(AP)——按场景选
  • Redis Cluster 的心跳(gossip)互传节点状态,cluster-node-timeout 默认 15000 ms;超时先标记 PFAIL,再由多数 master 确认后升级为 FAIL

🎤 常见面试追问

  1. Raft 的核心机制(背 3 点)?——Leader 选举(随机超时 + 过半选票)、日志复制(过半确认才提交)、安全性(选举限制 + 提交限制)。
  2. 为什么过半(多数派)是关键?——任何两个多数派必有交集 → 不会出现两个 Leader 同时提交不同数据;容错:3 节点容忍 1 宕机、5 节点容忍 2。
  3. Raft 和 ZAB 的区别?——同:Leader 制 + 过半提交 + 任期/纪元;异:Raft 随机超时选举 + 日志连续性校验,ZAB 用 zxid 排序(epoch+序号)。Raft 更易懂,现代新系统(ETCD/KRaft)都用 Raft。
  4. Gossip 是什么?和 Raft 的区别?——Gossip:节点随机互传信息最终一致(AP,Redis Cluster 状态同步);Raft:强一致(CP)。按一致性要求选。
  5. Paxos 和 Raft 的关系?——Paxos 是共识理论鼻祖(两阶段多数派),难理解难实现;Raft 是其工程化简化版,面试考 Raft 即可。

📖 名词解释(本页术语)

术语 大白话解释
Raft分布式共识协议:多节点就"谁当 Leader、日志怎么提交"达成一致(过半机制)。ETCD、Kafka KRaft 用它。
Leader / Follower / CandidateRaft 三角色:Leader 处理写请求;Follower 被动复制;Candidate 参与选举。
任期(Term)/ 过半任期 = 每次选举的"届";过半 = 多数派确认(N/2+1),保证唯一 Leader 和数据不冲突。
ZABZooKeeper 的原子广播协议:zxid 有序 + 过半提交,保证 ZooKeeper 的强一致。
zxidZooKeeper 的事务 ID(纪元+序号),全局有序——日志复制的顺序依据。
Paxos共识算法鼻祖(Lamport):prepare/accept 两阶段多数派。理论价值 > 工程价值。
Gossip(流言协议)节点间随机互传状态,最终一致、去中心、可扩展——Redis Cluster 用它。
共识(Consensus)多节点对"同一个值"达成一致的过程——分布式系统一致性的核心机制。
⚠️ 本页面由 AI 生成,内容仅供参考,请以官方文档和实际源码为准。