我正在从Raft paper从头学习木筏,我无法理解领导人选举过程。RAFT选举限制
筏使用更简单的方法它保证了从以前的所有方面承诺的条目是存在于每个:我在5.4.1,一个领导者需要在其日志在群集中的所有承诺条目读新领导 从其当选之日起,无需将这些 条目转移给领导。
Raft使用投票过程来阻止候选人赢得选举,除非其日志包含所有提交的条目。
但后来,据说候选保存所有提交的项目,如果它至少高达最新任何其他日志中的大多数。确定最新条目的机制是比较最后条目的索引和条款。最后一个条目的较高期限的日志将更新。
难道这不会导致领导者被选举而没有所有先前承诺的条目吗?例如:
在这种情况下,如果服务器4失败,服务器2有可能成为领导者,因为它具有比大多数更大的期限的条目。但是它的日志中没有第2项中的两个承诺条目。是吗?我误解了一些东西,但我可以得到它是什么...
我明白你说什么,但我的问题是不同的。例如,在你刚刚列出的例子中,我没有得到的是服务器2如何成为术语3的领导者(据推测),当术语2的两个第一项可能被提交时。 – vandermies
服务器2不能成为术语3的领导者。在选举期间,服务器2的最后一个术语将是1.服务器2不能被选为术语3,因为大多数其他服务器 - 服务器1,4和5 - 具有条目从他们的日志中的术语2开始。这是我的观点。这个历史是不可能的。 – kuujo
好的,只是为了确保我能得到它:限制条件是成为服务器的领导者必须拥有所有承诺的条目,然后通过在投票期间研究其他日志的条款和索引间接实施。不是由任何说明哪些条目已提交的变量?那是对的吗? – vandermies