一致性哈希 與 普通哈希對(duì)比

一致性哈希 與 普通哈希對(duì)比

標(biāo)簽:區(qū)別哈希

原創(chuàng)作品,允許轉(zhuǎn)載,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必以超鏈接形式標(biāo)明文章原始出處、作者信息和本聲明。否則將追究法律責(zé)任。http://xinsir.blog.51cto.com/5038915/1532872

正文 begin

普通哈希算法

假如有cache主機(jī)5臺(tái)分別為cacheA、cacheB、cacheC、cacheD、cacheE

當(dāng)程序進(jìn)行hash時(shí),首先每個(gè)節(jié)點(diǎn)要根據(jù)自己的唯一參數(shù)哈希出一個(gè)值來(lái)(如根據(jù)ip進(jìn)行哈希)

主機(jī)哈希完成后形成的哈希值如下

cacheA?????? 0

cacheB???????1

cacheC?????? 2

cacheD?????? 3

cacheE?????? 4

主機(jī)形成哈希值后,我們以緩存來(lái)做實(shí)例,比如某個(gè)用戶(hù)登錄后會(huì)有一個(gè)唯一的pin值,然后根據(jù)

這個(gè)pin值進(jìn)行hash求余。因?yàn)榍笥嗍怯?來(lái)求余,所以數(shù)值肯定會(huì)小宇5 因此就有了落點(diǎn),然后把

緩存數(shù)據(jù)進(jìn)行緩存到落點(diǎn)服務(wù)器中

一致性哈希算法

假如有cache主機(jī)5臺(tái)分別為cacheA、cacheB、cacheC、cacheD、cacheE

當(dāng)程序進(jìn)行hash時(shí),首先每個(gè)節(jié)點(diǎn)要根據(jù)自己的唯一參數(shù)哈希出一個(gè)值來(lái)(如根據(jù)ip進(jìn)行哈希)

主機(jī)哈希完成后形成的哈希值如下

cacheA?????? key1

cacheB???????key2

cacheC?????? key3

cacheD?????? key4

cacheE?????? key5

然后5臺(tái)節(jié)點(diǎn)圍繞稱(chēng)一個(gè)環(huán)形,如圖


主機(jī)形成哈希值后,我們以緩存來(lái)做實(shí)例,比如某個(gè)用戶(hù)登錄后會(huì)有一個(gè)唯一的pin值,然后根據(jù)

這個(gè)pin值進(jìn)行hash。這里注意和普通hash不一樣的就是這里只hash不求余,當(dāng)hash出一個(gè)數(shù)值

后,查看這個(gè)這個(gè)值介于那兩個(gè)值之間比如介于key4和key5之間,然后從這個(gè)落點(diǎn)開(kāi)始順時(shí)針查

找遇到第一個(gè)cache服務(wù)器后就把這個(gè)服務(wù)器當(dāng)作此次緩存的落點(diǎn),從而把這個(gè)緩存放到這個(gè)落點(diǎn)

上。如圖:


兩者比較:

經(jīng)過(guò)上面的介紹我們能看出,假如普通的哈希當(dāng)其中任意一臺(tái)機(jī)器down掉后,我們整個(gè)的

緩存都將安然無(wú)存,為什么這么說(shuō)呢?

因?yàn)楫?dāng)某臺(tái)cache down掉后我們需要重選算落點(diǎn),除數(shù)已經(jīng)變了,所以都要重新set緩存,

當(dāng)然不排除有一些兩個(gè)pin值算的落點(diǎn)是一樣的,但是當(dāng)cache服務(wù)器增加到一定數(shù)量后,前面所

說(shuō)的可能性幾乎為0,所以稱(chēng)之為全部緩存都要重新set。

而使用一致性哈希當(dāng)其中一臺(tái)機(jī)器down掉后,只有它上面到它這一段的環(huán)路緩存失效了,如:

當(dāng)cache3 down掉后,那落掉在cache2到cache3之間的pin都將失效,那么失效的落點(diǎn)講繼續(xù)順時(shí)

針查找cache服務(wù)器,那么新的落點(diǎn)都將落到cache4上。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Memcached是一個(gè)分布式的高性能內(nèi)存對(duì)象緩存系統(tǒng),可以緩存數(shù)據(jù),如果沒(méi)有它,就必須從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù),加重?cái)?shù)...
    狼之足跡閱讀 2,719評(píng)論 0 1
  • 上一篇《WEB請(qǐng)求處理一:瀏覽器請(qǐng)求發(fā)起處理》,我們講述了瀏覽器端請(qǐng)求發(fā)起過(guò)程,通過(guò)DNS域名解析服務(wù)器IP,并建...
    七寸知架構(gòu)閱讀 81,779評(píng)論 21 356
  • 場(chǎng)景 最近要在應(yīng)用中做一層內(nèi)存緩存來(lái)加快系統(tǒng)的響應(yīng)。但是由于數(shù)據(jù)量較大,單臺(tái)Server無(wú)法Load全量數(shù)據(jù),所以...
    mmlmml閱讀 684評(píng)論 0 4
  • 隔著言不由衷的遙遠(yuǎn),帶著口是心非的遺憾。 01 男人總是抱怨地說(shuō)女人是很神奇的生物,因?yàn)樗齻儚牟徽f(shuō)出自己最真實(shí)的想...
    沐森讀書(shū)閱讀 1,060評(píng)論 0 0
  • 文/阿洛 已經(jīng)很晚了,坐在桌旁,望著手機(jī)上QQ的“聯(lián)系人”發(fā)著呆。忽然,看到了你。 我們分別已經(jīng)有三個(gè)多月了,最...
    無(wú)刺之猬Lola閱讀 222評(píng)論 0 1

友情鏈接更多精彩內(nèi)容