世代時鐘

單調遞增的數字,表示伺服器的世代。

又稱:任期、紀元和世代

問題

領導者和追隨者設定中,有可能領導者會暫時與追隨者斷開連線。領導者程序中可能會出現垃圾回收暫停,或暫時性的網路中斷導致領導者與追隨者斷開連線。在這種情況下,領導者程序仍然在執行,並且在暫停或網路中斷結束後,它將嘗試向追隨者傳送複製請求。這很危險,因為同時叢集的其餘部分可能已經選出新的領導者並接受來自客戶端的請求。叢集的其餘部分偵測來自舊領導者的任何請求非常重要。舊領導者本身也應該能夠偵測到它已暫時與叢集斷開連線,並採取必要的矯正措施以卸下領導職務。

解決方案

維護一個單調遞增的數字,表示伺服器的世代。每次發生新的領導者選舉時,都應透過遞增世代來標記。世代需要在伺服器重新開機後仍然可用,因此它會儲存在預寫式記錄中的每個項目中。如高水位標記中所討論的,追隨者使用這些資訊來尋找其記錄中的衝突項目。

如果追隨者收到來自被廢黜領導者的訊息,追隨者可以因為它的世代太低而得知。然後追隨者會回覆失敗回應。

有關更多詳細資訊,請參閱 oreilly.com 上線上電子書的第 09 章

此模式是分散式系統模式的一部分

2023 年 11 月 23 日