分布式快取的一致性Hash演算法

2021-07-23 07:49:28 字數 396 閱讀 3961

具體過程:

(1)先構造乙個長度為0~2^32的整數環,根據節點名稱的hash值,將快取伺服器節點放置在這個hash環上。

(2)根據需要快取的資料的key值計算得到其hash值,然後在hash環上順時針查詢距離這個key值的hash值最近的快取伺服器節點,完成key到伺服器的hash對映查詢。

補充:這個一致性hash環使用二叉查詢樹實現,hash查詢過程實際上是在二叉查詢樹中查詢不小於查詢樹的最小數值

另外,為了解決上述演算法帶來的負載不均衡問題,通過使用虛擬層,將每台物理快取伺服器虛擬為一組虛擬快取伺服器,將虛擬伺服器的hash值放置在hash環上,key在環上先找到虛擬伺服器節點,再得到物理伺服器的資訊。

分布式快取的一致性 Hash 演算法

簡單的路由演算法可以使用餘數 hash 用伺服器資料除快取資料 key 的 hash 值,餘數為伺服器列表下標編碼。這種演算法可以滿足大多數的快取路由需求。但是,當分布式快取集群需要擴容的時候,事情就變得棘手了。舉個例子 很容易可以計算出,3臺快取伺服器擴容至4臺伺服器,大約有 75 3 4 被快取...

分布式一致性Hash演算法

介紹一致性hash演算法之前,先簡單回顧一下分布式以及hash演算法,便於理解為什麼要有一致性hash演算法。當我們也無需求很複雜時,單台機器io以及頻寬等都會成為瓶頸,所以對業務進行拆分,部署在不同的機器上,當有請求訪問時,根據某些特點將這些請求分散到各個伺服器上,這所有的伺服器組成的網路,我們稱...

redis分布式一致性hash演算法

當我們在部署redis節點時,使用者鏈結redis儲存資料會通過hash演算法來定位具體鏈結那個redis節點,在redis節點數量沒有改變的前提下,之前的使用者通過hash演算法會固定的鏈結某一台redis節點,但是若此時我們增加了redis節點,使用者再次hash時,能會hash到別的redis...