一致性哈希算法

未完待續(xù)

一、引出

假設有 100W 的數(shù)據(jù)儡毕,100 個存儲節(jié)點也切,如何分配呢?
通常的方法是哈希腰湾,數(shù)據(jù)存儲到第 hash(key)\%100 個節(jié)點上雷恃。
可是,當新增或刪除節(jié)點時费坊,需要對所有的數(shù)據(jù)重新映射倒槐,可能發(fā)生大規(guī)模的數(shù)據(jù)遷移。這對于分布式系統(tǒng)而言附井,是一個很嚴重的問題讨越。

一致性哈希算法就是為了解決這個問題產生的,即『當slot數(shù)發(fā)生變化時永毅,能夠盡量少的移動數(shù)據(jù)』

維基百科:一致哈希是一種特殊的哈希算法把跨。在使用一致哈希算法后,哈希表槽位數(shù)(大芯淼瘛)的改變平均只需要對 K/n個關鍵字重新映射节猿,其中K是關鍵字的數(shù)量, n是槽位數(shù)量漫雕。然而在傳統(tǒng)的哈希表中,添加或刪除一個槽位的幾乎需要對所有關鍵字進行重新映射峰鄙。

二浸间、實現(xiàn)

基本實現(xiàn)

實現(xiàn)原理:
1)將 0~最大正整數(shù)形成一個環(huán)
2)計算每個節(jié)點的哈希值,即 hash(node)吟榴,并落入環(huán)上某個位置
3)計算數(shù)據(jù)的哈希值魁蒜,即 hash(key),并落入環(huán)上某個位置吩翻。
4)數(shù)據(jù)在環(huán)上的位置順時針找離它最近的節(jié)點兜看,作為該數(shù)據(jù)的存儲節(jié)點

可理解成:每個節(jié)點負責某個范圍內的哈希值的數(shù)據(jù)。比如狭瞎,當哈希值在 [hash(node1), hash(node2)] 內的數(shù)據(jù)细移,落入 node2。

插圖(構建環(huán))熊锭,參考文獻[1][3]

當節(jié)點變化弧轧,僅影響該節(jié)點順時針方向的下一個節(jié)點雪侥,具體情況如下:

  • 當刪除一個節(jié)點時,該節(jié)點上的數(shù)據(jù)遷移到該節(jié)點順時針方向的下一節(jié)點上
  • 當新增一個節(jié)點時精绎,該節(jié)點順時針方向的下一節(jié)點部分數(shù)據(jù)遷移到該節(jié)點上速缨。

插圖(刪除/新增節(jié)點),參考文獻[1][3]

改進一:加入虛擬節(jié)點

目的:為了使得每個節(jié)點的負載盡量均衡

參考文獻

[1] 一致性Hash原理_憧憬的專欄-CSDN博客
[2] 一致性哈希算法的理解與實踐 | Yikun
[3] 一致性hash算法及java實現(xiàn)Java青魚入云的博客-CSDN博客

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末代乃,一起剝皮案震驚了整個濱河市旬牲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌搁吓,老刑警劉巖原茅,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異擎浴,居然都是意外死亡员咽,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門贮预,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贝室,“玉大人,你說我怎么就攤上這事仿吞』担” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵唤冈,是天一觀的道長峡迷。 經常有香客問我,道長你虹,這世上最難降的妖魔是什么绘搞? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮傅物,結果婚禮上夯辖,老公的妹妹穿的比我還像新娘。我一直安慰自己董饰,他們只是感情好蒿褂,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著卒暂,像睡著了一般啄栓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上也祠,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天昙楚,我揣著相機與錄音,去河邊找鬼齿坷。 笑死桂肌,一個胖子當著我的面吹牛数焊,可吹牛的內容都是我干的。 我是一名探鬼主播崎场,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼佩耳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了谭跨?” 一聲冷哼從身側響起干厚,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎螃宙,沒想到半個月后蛮瞄,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡谆扎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年挂捅,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片堂湖。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡闲先,死狀恐怖,靈堂內的尸體忽然破棺而出无蜂,到底是詐尸還是另有隱情伺糠,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布斥季,位于F島的核電站训桶,受9級特大地震影響,放射性物質發(fā)生泄漏酣倾。R本人自食惡果不足惜舵揭,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望躁锡。 院中可真熱鬧琉朽,春花似錦、人聲如沸稚铣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惕医。三九已至,卻和暖如春算色,著一層夾襖步出監(jiān)牢的瞬間抬伺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工灾梦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留峡钓,地道東北人妓笙。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像能岩,于是被迫代替她去往敵國和親寞宫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345