我正在從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