一致性雜湊的虛擬節點

2021-07-02 05:38:51 字數 448 閱讀 6644

設環空間從 0 ~ 1000

目前有三個節點 [300, 600, 900], 各負責大約 300 的區段, 現在的問題是, 在沒有虛擬節點概念的情況下, 如果乙個節點失效, 其下游的節點會承擔失效節點的所有資料量, 造成資料分布不均. 可以通過以下方式改善

new_list =

for real_node in [300, 600, 900]:

for i in range(0, 10):

virt_node = (real_node + random(0, 1000) % 1000, real_node) # 不一定使用 random, 也可以使用其它更均勻的方式

new_list.sort()

new_list 即是接入了虛擬節點的雜湊環, 即使用一定的演算法對乙個新加入的物理節點產生出在雜湊環中分布均勻的虛擬節點, 然後每個虛擬的雜湊節點都記錄了其源物理節點的位址.

一致性雜湊演算法 虛擬節點

一致性雜湊演算法 虛擬節點 一致性雜湊演算法是分布式系統中常用的演算法。比如,乙個分布式的儲存系統,要將資料儲存到具體的節點上,如果採用普通的hash方法,將資料對映到具體的節點上,如key n,key是資料的key,n是機器節點數,如果有乙個機器加入或退出這個集群,則所有的資料對映都無效了,如果是...

一致性hash演算法虛擬節點 一致性hash演算法

hash 演算法也叫做雜湊演算法,他可以讓任意長度的資料m對映成為長度固定的值h。hash演算法的第乙個作用就是資料的快速儲存與查詢。寫過程式的人都知道,基本上主流的程式語言裡面都有個資料結構叫做map dictionary或者 hash table 它是根據key來直接訪問結果的資料結構。key的...

一致性雜湊

直接貼出一篇介紹的很清楚的博文。關鍵字一致性雜湊 平衡性,單調性,分散性,負載 其實說白了,就是解決把請求分散到不同的機器上運算,怎麼做分散的平均,機器少一台多一台,或者壞掉一台,成很好的自適應和拓展。最簡單的實現分布式演算法,取模嘛,但是它就上述的一些問題,所以不算好的雜湊函式。一致性雜湊演算法,...