1

如果我有將數據寫入存儲的系統。是否可以將節點添加到數據同步複製的羣集?

在羣集設置中,如果數據是同步複製的,也就是說,當我收到請求更改跨所有節點更新的數據,然後返回響應時。

在這種情況下是否可以動態添加節點?

也就是說,有2個節點,並且在該羣集上執行一些事務。我可以添加集羣仍在運行的第三個節點嗎?

如果我添加一個這樣的新節點,是不是破壞了集羣的強一致性?

回答

0

我相信你正在尋找的是一致性散列(Wikipedia)它允許你以一種方式分配你的內存,使數據在多個節點之間正確地複製,並且添加或刪除一個節點的開銷較少,我建議你去通過鏈接The simple magic of consistent hashing

0

簡單化和原理的例子(只是許多可能的變體之一):

  1. 一個節點在錄製模式下添加。羣集的行爲就像新節點不在那裏一樣,但是也會複製需要駐留在該節點上的對象的更新。
  2. 確定哪些現有對象需要駐留在新節點上。快照在每個現有節點上創建併發送到新節點。新節點可能以批處理模式處理它們(插入其存儲)。
  3. 在新節點上播放在記錄階段累積的更新,而新更新仍在記錄中。如果某些更新已作爲快照的一部分進行計算,則應該跳過它們,否則應該導致不更改。
  4. 一旦所有更新都重新播放並且過程中沒有錯誤,羣集將切換到新配置(新節點完全啓動)。應該駐留在新節點上的對象的更新停止發送到其舊目標。數據從舊目標中清除。
  5. 如果在處理過程中的任何時候發生錯誤,它會被中止並可能重新重複。

可能的調整:

  • 查詢都老了一段時間切換到新的配置之前,新的節點,並比較結果返回。如有任何差異中止和調查。
  • 在切換到新配置之前進行全面比較(可能是校驗和)。
相關問題