我使用以下pdf作爲參考。 在raft協議中,對於服務器中的易失性狀態,lastApplied和matchIndex是什麼?
它說lastApplied
是應用於狀態機的最高日誌條目,但是與commitIndex
有什麼不同呢?
也就是領導者上的matchIndex
只是追隨者的commitIndex?如果不是有什麼區別?
我使用以下pdf作爲參考。 在raft協議中,對於服務器中的易失性狀態,lastApplied和matchIndex是什麼?
它說lastApplied
是應用於狀態機的最高日誌條目,但是與commitIndex
有什麼不同呢?
也就是領導者上的matchIndex
只是追隨者的commitIndex?如果不是有什麼區別?
...
lastApplied
是應用於狀態機的最高日誌條目,但是與commitIndex
有什麼不同呢?
這些在實際系統中是不同的,因爲提交日誌中的數據的組件通常與將其應用於複製的狀態機或數據庫的組件分離。 commitIndex
通常僅爲納秒,或者可能比lastApplied
更新的幾毫秒。
matchIndex
對領導只是commitIndex
追隨者?如果不是有什麼區別?
它們是不同的。有一段時間數據位於服務器上,但尚未提交,例如複製期間。
領導跟蹤每個對等方的最新未提交數據,只需向每個對等方發送log[matchIndex[peer], ...]
而不是整個日誌。如果同伴顯着落後於領導者,這尤其有用;因爲領導者可以通過一系列小的AppendEntries
調用來更新對等點,從而逐步使對等點更新。
非常感謝您的回答,另一個快速問題,是'matchIndex'中的信息已經在'nextIndex'中捕獲了嗎?由於'nextIndex - 1'應該是'matchIndex' – Jal