天天看點

分布式系統架構系列講解二十九(可擴充 1):一緻性Hash

分布式系統架構系列講解 - 總目錄

一、資料分片

可擴充性是指當系統的任務(work)增加時,通過增加資源來應對任務增長的能力。分布式系統出現的目的之一就是解決單個計算機無法完成的計算、存儲任務。那麼當任務規模增加的時候,首先要考慮的問題就是:

如何對任務進行拆分,将任務的子集配置設定到每一個節點,每個節點隻負責原問題(即整個系統需要完成的任務)的一個子集?

比如,在分布式存儲系統中,任務的拆分就是資料分片,每個節點存儲完整資料的一部分。常見的資料分片算法包括:普通哈希(hash),一緻性哈希(consistency hash),基于資料範圍分片(range based)。

無論哪一種算法,都需要考慮以下問題:

  • 如何劃分原始資料集?
  • 當原問題的規模變大時,能否通過增加節點來動态适應?
  • 當某個節點故障的時候,能否将該節點上的任務/資料轉移到其它節點?

每一種算法有各自的優缺點,也就有各自的适用場景。本文主要介紹一緻性Hash,在這之前我們先來回顧下普通Hash。

二、普通Hash

學過資料結構的童鞋都

繼續閱讀