“Raft 用任期、领导者选举、投票限制和 AppendEntries 具体实现复制日志的提交接口,再由复制状态机应用 committed 前缀。这一接口可写成实现状态到抽象日志状态的精化关系…”
形式陈述 ​
选主任务要求在允许的执行中,最终恰有一个进程被选为 leader,所有正确进程对其身份一致,并通常要求被选身份合法。可解性依赖唯一标识、网络拓扑、同步性、故障和公平性;在完全对称匿名系统中,确定性算法可能无法破坏对称。选主可服务于共识,但本身不等同于对值达成共识,也不同于协议可反复查询的故障检测器 oracle。
直觉
选主规格通常同时包含唯一性与终止性:所有正确进程最终认可同一名合法进程,并在系统稳定后不再无限换主。困难不只是“找最大编号”,而是进程无法直接观察全局成员状态;超时只说明暂时没收到消息,可能是网络慢、对方崩溃或自身被隔离。唯一 ID、随机性、时序上界或故障检测器都是用来打破对称与不确定性的额外来源。
例子与边界
有唯一 ID 的环上可比较 ID 选最大者;匿名对称环中无外部不对称时确定性选主不可能。故障检测器可帮助最终稳定到一个正确 leader,但短暂出现多个候选不一定违反最终选主规格。
在具有唯一 ID 的同步环上,每个进程转发见过的最大 ID,至多一圈后最大者可被所有人确认。匿名环若所有节点初态、端口标号与调度完全对称,确定性算法会让所有节点始终采取相同动作,不可能恰选一个。崩溃模型中,暂时同时存在两个候选不必违反 eventual leader 规格,但若两者都能对外执行主权操作,就必须由任期、quorum 或 fencing token 阻止旧主产生有效写入。
推论与应用
消息传递系统中的选主依赖可区分的允许执行与进程身份。Ω只承诺某个未知时刻后,所有正确进程永久输出同一个正确标识;稳定前不同 oracle 输出并不直接违反其规格。选主任务则要由算法把输出解释为最终领导者,并规定合法身份与任务完成条件。
Raft把任期选举与日志新旧限制结合,主副本复制还需 quorum 或 fencing 阻止旧主继续产生有效写入。共同 leader 是协调工具,不会单独提供共识安全或日志提交证据。
参考资料
- Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996,Chs. 1–25。
- Michael J. Fischer, Nancy A. Lynch, and Michael S. Paterson, “Impossibility of Distributed Consensus with One Faulty Process,” Journal of the ACM 32(2), 1985,Full paper。