複製日誌

透過寫入前記錄,複製到所有叢集節點,讓多個節點的狀態保持同步。

問題

當多個節點共用一個狀態時,需要同步該狀態。所有叢集節點都必須同意相同的狀態,即使某些節點崩潰或斷線。這需要針對每個狀態變更請求達成共識。

但是,針對個別請求達成共識還不夠。每個複本也需要以相同的順序執行請求,否則不同的複本可能會進入不同的最終狀態,即使它們對個別請求達成共識。

解決方案

叢集節點維護一個 寫入前記錄。每個記錄條目會儲存共識所需的狀態以及使用者請求。它們會協調建立記錄條目的共識,以便所有叢集節點具有完全相同的寫入前記錄。然後,會根據記錄依序執行請求。由於所有叢集節點都同意每個記錄條目,因此它們會以相同的順序執行相同的請求。這可確保所有叢集節點共用相同的狀態。

如需更多詳細資訊,請參閱 oreilly.com 上線上電子書的 第 12 章

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

2023 年 11 月 23 日