Hash一致性演算法

2021-10-01 21:22:25 字數 1182 閱讀 7287

在分布式集群中,對機器的新增刪除,或者機器故障後自動脫離集群這些操作是分布式集群管理最基本的功能。如果採用常用的hash(object)%n演算法,那麼在有機器新增或者刪除後,很多原有的資料就無法找到了,這樣嚴重的違反了單調性原則。

redis的分片底層原理:一致性hash演算法

兩大設計:

(1)hash環設計:非常大,從0到2^32(43億個值),把物件(資料)和伺服器對映到同乙個雜湊空間中;

(2)虛擬節點的設計:通過虛擬節點的引入,物件的分布就比較均衡了。

確定節點node的位置

對key進行hash運算.獲取唯一的位置

之後順時針找到最近的節點

之後鏈結節點進行set/get操作

說明 : 為了解決資料分配不均,採用虛擬節點的方式實現資料的均衡(均衡性演算法)

問題說明 : 如果沒有虛擬節點平衡資料,則會造成資料負載不均

平衡性:盡量分散;

說明 : 當節點新增時,資料可以實現自動的遷移

重點 : 一旦節點宕機,則記憶體缺失,整個分片不能正常使用

原則 : 如果節點新增,則盡可能保證原有的資料不發生變化

已經分配的不能換地方

由於分布式的部署導致某些伺服器不能使用全部的記憶體空間,同乙個key有多個位置

由於分布式的部署導致某些伺服器不能使用全部的記憶體空間.同乙個位置可能會有多個key

盡量避免分散性和負載

防止 : 盡可能使用全部的記憶體空間.能夠有效的降低分散性和負載

1、搭建快取集群緩解伺服器的訪問壓力;

2、通過hash演算法將資料合理的分配到每一台快取伺服器中;

3、出現增減快取伺服器是hash演算法存在問題;

4、引入一致性雜湊演算法解決這個問題:保持了單調性,避免了大量資料遷移,減小了伺服器的壓力;

5、通過虛擬節點方式解決雜湊偏斜問題。

一致性hash演算法 面試必備 一致性hash演算法

最近公司在招人,我們準備的問題中有一道是關於一致性hash演算法的問題,只有一些面試者能夠回答上來,而且答的也不是很全面,有的面試者只是聽說過,有的連聽都沒聽過,下面我把一致性hash演算法整理一下分享給大家 一致性雜湊演算法在1997年由麻省理工學院的karger等人在解決分布式cache中提出的...

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

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

一致性hash演算法

july部落格16章開始 第一題 全排列,輸入乙個字串,列印出該字串中字元的所有排列 1.個人思路 回溯法建立的排序樹 2.july部落格 遞迴實現,依次固定第乙個字母,後面的交換,和上面描述的使用回溯法相似 c stl 演算法 next permutation的思想,關於next permutat...