分布式系統架構系列講解 - 總目錄
一、資料分片
可擴充性是指當系統的任務(work)增加時,通過增加資源來應對任務增長的能力。分布式系統出現的目的之一就是解決單個計算機無法完成的計算、存儲任務。那麼當任務規模增加的時候,首先要考慮的問題就是:
如何對任務進行拆分,将任務的子集配置設定到每一個節點,每個節點隻負責原問題(即整個系統需要完成的任務)的一個子集?
比如,在分布式存儲系統中,任務的拆分就是資料分片,每個節點存儲完整資料的一部分。常見的資料分片算法包括:普通哈希(hash),一緻性哈希(consistency hash),基于資料範圍分片(range based)。
無論哪一種算法,都需要考慮以下問題:
- 如何劃分原始資料集?
- 當原問題的規模變大時,能否通過增加節點來動态适應?
- 當某個節點故障的時候,能否将該節點上的任務/資料轉移到其它節點?
每一種算法有各自的優缺點,也就有各自的适用場景。本文主要介紹一緻性Hash,在這之前我們先來回顧下普通Hash。
二、普通Hash
學過資料結構的童鞋都