分佈式存儲擴容時,怎樣選取要遷移的數據?

餘映燈

“我是喲喲吼說科技,專注於數據網絡的回答,歡迎大家與我交流數據網絡的問題”

如題,分佈式存儲擴容時,怎樣去選取遷移的數據?

喲喲認為可以採用一致性hash算法來選取遷移的數據,這樣對整體分佈式存儲架構影響最小。

下面喲喲來介紹一下一致性hash算法對數據的遷移過程:

一致性哈希算法通過減少影響範圍的方式可以解決增減服務器導致的數據散列的問題,解決了分佈式結構部署環境下的負載均衡的問題。

一致性哈希算法使用取模的方式,取模的基數為2^32,我們可以把這些想象為一個圓,每個節點代表一個服務器,如下圖,整個分佈式結構有3臺服務器,假設為A、B、C,橘黃色表示某個圖片的key,這個key被存儲到哪臺服務器上呢?

一致性哈希算法就是從該位置開始,以順時針方向遇到的第一個服務器就是存儲到的服務器節點,可以看出該圖片的key第一個遇到的服務器就是A,因此會存儲在服務器A上。

通過這種算法我們可以看出,如果對分佈式存儲進行擴容時,只需將臨近的數據考取到新增的服務器節點即可,不用將全部的數據從新分配再進行調整,從而解決了因增減設備而導致的數據散列問題。舉個例子來說明:

如上圖,其中有三個服務器節點,若添加一個節點需要將哪些數據進行調整呢?

添加服務器B節點,則只需將數據的K1、K2進行調整即可,不需要將所有的數據進行調整,這樣對整個分佈式存儲架構影響最小。


分享到:


相關文章: