redis分佈式緩存集羣,一致性hash算法尋址

分佈式尋址算法

  • hash 算法(大量緩存重建)
  • 一致性 hash 算法(自動緩存遷移)+ 虛擬節點(自動負載均衡)
  • redis cluster 的 hash slot 算法

hash 算法

來了一個 key,首先計算 hash 值,然後對節點數取模。然後打在不同的 master 節點上。一旦某一個 master 節點宕機,所有請求過來,都會基於最新的剩餘 master 節點數去取模,嘗試去取數據。這會導致大部分的請求過來,全部無法拿到有效的緩存,導致大量的流量涌入數據庫。

hash

一致性 hash 算法

一致性 hash 算法將整個 hash 值空間組織成一個虛擬的圓環,整個空間按順時針方向組織,下一步將各個 master 節點(使用服務器的 ip 或主機名)進行 hash。這樣就能確定每個節點在其哈希環上的位置。

來了一個 key,首先計算 hash 值,並確定此數據在環上的位置,從此位置沿環順時針“行走”,遇到的第一個 master 節點就是 key 所在位置。

在一致性哈希算法中,如果一個節點掛了,受影響的數據僅僅是此節點到環空間前一個節點(沿着逆時針方向行走遇到的第一個節點)之間的數據,其它不受影響。增加一個節點也同理。

燃鵝,一致性哈希算法在節點太少時,容易因爲節點分佈不均勻而造成緩存熱點的問題。爲了解決這種熱點問題,一致性 hash 算法引入了虛擬節點機制,即對每一個節點計算多個 hash,每個計算結果位置都放置一個虛擬節點。這樣就實現了數據的均勻分佈,負載均衡。

consistent-hashing-algorithm



作者:AKyS佐毅
鏈接:https://www.jianshu.com/p/501724c23d7a
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯繫作者獲得授權並註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章