← [ BACK_TO_NOTES ]

Leader Election

解释多个节点为什么需要选出单一协调者,以及 term、quorum、lease 和 fencing 等机制如何避免旧 Leader 继续产生危险副作用。

#concept #growing #backend #architecture

[!info] related notes

Leader Election

[!abstract] 一句话定义 Leader Election 让多个候选节点在同一任期(Term / Epoch)内选出一个被多数派认可的协调者,由它推进共享日志、分配任务或执行单写操作;系统还必须识别并隔离已经失去资格的旧 Leader。

为什么“谁先启动谁就是 Leader”不可靠

多个节点可能同时认为自己健康:

A cannot reach B
B cannot reach A
A: “B died, I am leader”
B: “A died, I am leader”

如果没有 Quorum、Epoch 和 Fencing,两边都可能执行写入,形成 Split Brain。

选举至少要解决四件事

  1. 唯一资格:同一 Term 内最多一个有效 Leader;
  2. 故障检测:何时认为当前 Leader 已不可用;
  3. 任期推进:新 Leader 使用更高 Term / Epoch;
  4. 旧 Leader 隔离:旧节点恢复后不能继续推进状态。

“选出一个名字”只是开始,真正目标是安全推进共享状态。

Quorum 的作用

多数派交集让两个互不相交的候选集合难以同时获得有效资格:

3 voters → quorum 2
5 voters → quorum 3

任何两个多数派必然至少共享一个成员,可用于保证已提交信息和新选举之间的连续性。

节点越多不代表越快:写入和选举需要更多通信,通常根据故障容忍目标使用 3 或 5 个投票成员。

Term / Epoch 为什么重要

Leader A: term 7
Leader B: term 8

即使 A 仍在运行,携带旧 Term 的请求也应被集群或下游拒绝。Term / Epoch 提供“新资格优于旧资格”的单调证据。

这也是 Fencing Token 的基础思想。

Failure Detection 不是事实证明

Heartbeat Timeout 只能说明“在预算内没收到响应”,可能原因包括:

  • 节点崩溃;
  • 网络分区;
  • GC / Process Pause;
  • 磁盘卡顿;
  • 调度延迟。

因此 Failure Detector 给出怀疑,真正 Leader 资格仍应由 Quorum / Consensus 决定。

Lease-based Leader

Leader 持有有限期限 Lease,并持续续租:

lease valid → may act
lease expires → must stop

但旧 Leader 可能因 Pause 没意识到 Lease 已失效。保护外部数据库、文件或设备时,需要下游校验更高 Epoch / Fencing Token。

[!warning] 本地时钟不能单独证明领导权 “我看自己的 TTL 还没过”不足以证明 Quorum 仍认可当前节点。

Leader Election 与 Distributed Lock

  • Election:选择长期协调者,常伴随 Term、日志和状态转移;
  • Lock:临时保护某个临界区或资源。

实现原语可能相似,但生命周期、恢复和状态交接不同。拿到一个 Lock Key 不等于完成 Leader 状态恢复。

典型选举后流程

win election
→ load latest committed state
→ obtain new epoch / fencing token
→ reconcile unfinished work
→ begin serving writes
→ renew leadership
→ on loss, stop writes and release resources

如果新 Leader 不先恢复和 Reconcile,可能重复任务或遗漏状态。

观测重点

current leader / term
leader changes and election duration
quorum health
heartbeat / peer latency
leadership renewal failures
fenced stale requests
work duplicated during failover

频繁选举通常说明网络、磁盘、暂停、资源饱和或 Timeout 配置问题。

设计检查表

  • 投票成员和 Quorum 规则明确。
  • 每次 Leadership 带单调 Term / Epoch。
  • 旧 Leader 的写入能被真正下游拒绝。
  • 新 Leader 接管前恢复并 Reconcile 状态。
  • Failure Detector 参数与真实延迟/暂停匹配。
  • Leadership 丢失会传播 Cancellation 并停止副作用。
  • 选举频率、时长和 Split-brain 防护可观测。
创建于 2026/9/4 更新于 2026/9/4
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本