我正在用Raft 论文从头学习 Raft ,我无法理解领导者选举过程。我在 5.4.1 中读到,领导者需要在其日志中包含集群的所有已提交条目:
Raft 使用一种更简单的方法,它保证从选举的那一刻起,每个新领导者上都存在之前任期内所有已提交的条目,而无需将这些条目转移给领导者。
Raft uses the voting process to prevent a candidate from winning an election unless its log contains all committed entries.
但后来,据说候选人持有所有提交的条目,如果它至少与大多数其他日志一样最新。确定这个最新的机制是比较最后条目的索引和术语。最后一个条目上具有较高期限的日志将是最新的。
这难道不会导致在没有所有先前提交的条目的情况下选举领导者的情况吗?例如:
在这种情况下,如果服务器 4 发生故障,服务器 2 可能会成为领导者,因为它有一个比大多数人更大的条目。但它不会在其日志中包含第 2 学期的两个已提交条目。对吗?我误解了一些东西,但我能明白它是什么......