日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php框架 > 框架設計 > Hash一致性算法詳解

Hash一致性算法詳解

來源:程序員人生   發(fā)布時間:2016-04-08 09:07:04 閱讀次數(shù):3284次

1致性哈希算法在1997年由麻省理工學院提出的1種散布式哈希(DHT)實現(xiàn)算法,設計目標是為了解決因特網(wǎng)中的熱門(Hot spot)問題,初衷和CARP10分類似。1致性哈希修正了CARP使用的簡 單哈希算法帶來的問題,使得散布式哈希(DHT)可以在P2P環(huán)境中真正得到利用。
1致性hash算法提出了在動態(tài)變化的Cache環(huán)境中,判定哈希算法好壞的4個定義:
1、平衡性(Balance):平衡性是指哈希的結果能夠盡量散布到所有的緩沖中去,這樣可使得所有的緩沖空間都得到利用。很多哈希算法都能夠滿足這1條件。
2、單調(diào)性(Monotonicity):單調(diào)性是指如果已有1些內(nèi)容通過哈希分派到了相應的緩沖中,又有新的緩沖加入到系統(tǒng)中。哈希的結果應能夠保證原有已分配的內(nèi)容可以被映照到原本的或新的緩沖中去,而不會被映照到舊的緩沖集合中的其他緩沖區(qū)。
3、分散性(Spread):在散布式環(huán)境中,終端有可能看不到所有的緩沖,而是只能看到其中的1部份。當終端希望通過哈希進程將內(nèi)容映照到緩沖上時,由于不同終端所見的緩沖范圍有可能不同,從而致使哈希的結果不1致,終究的結果是相同的內(nèi)容被不同的終端映照到不同的緩沖區(qū)中。這類情況明顯是應當避免的,由于它致使相同內(nèi)容被存儲到不同緩沖中去,下降了系統(tǒng)存儲的效力。分散性的定義就是上述情況產(chǎn)生的嚴重程度。好的哈希算法應能夠盡可能避免不1致的情況產(chǎn)生,也就是盡可能下降分散性。
4、負載(Load):負載問題實際上是從另外一個角度看待分散性問題。既然不同的終端可能將相同的內(nèi)容映照到不同的緩沖區(qū)中,那末對1個特定的緩沖區(qū)而言,也可能被不同的用戶映照為不同 的內(nèi)容。與分散性1樣,這類情況也是應當避免的,因此好的哈希算法應能夠盡可能下降緩沖的負荷。

在散布式集群中,對機器的添加刪除,或機器故障后自動脫離集群這些操作是散布式集群管理最基本的功能。如果采取經(jīng)常使用的hash(object)%N算法,那末在有機器添加或刪除后,很多原本的數(shù)據(jù)就沒法找到了,這樣嚴重的違背了單調(diào)性原則。接下來主要講授1下1致性哈希算法是如何設計的:

環(huán)形Hash空間
依照經(jīng)常使用的hash算法來將對應的key哈希到1個具有2^32次方個桶的空間中,即0~(2^32)⑴的數(shù)字空間中。現(xiàn)在我們可以將這些數(shù)字頭尾相連,想象成1個閉合的環(huán)形。以下圖

這里寫圖片描述

把數(shù)據(jù)通過1定的hash算法處理后映照到環(huán)上
現(xiàn)在我們將object1、object2、object3、object44個對象通過特定的Hash函數(shù)計算出對應的key值,然后散列到Hash環(huán)上。以下圖:

Hash(object1) = key1; Hash(object2) = key2; Hash(object3) = key3; Hash(object4) = key4;

這里寫圖片描述

將機器通過hash算法映照到環(huán)上
在采取1致性哈希算法的散布式集群中將新的機器加入,其原理是通過使用與對象存儲1樣的Hash算法將機器也映照到環(huán)中(1般情況下對機器的hash計算是采取機器的IP或機器唯1的別名作為輸入值),然后以順時針的方向計算,將所有對象存儲到離自己最近的機器中。
假定現(xiàn)在有NODE1,NODE2,NODE33臺機器,通過Hash算法得到對應的KEY值,映照到環(huán)中,其示意圖以下:

Hash(NODE1) = KEY1; Hash(NODE2) = KEY2; Hash(NODE3) = KEY3;

這里寫圖片描述

通過上圖可以看出對象與機器處于同1哈希空間中,這樣按順時針轉(zhuǎn)動object1存儲到了NODE1中,object3存儲到了NODE2中,object2、object4存儲到了NODE3中。在這樣的部署環(huán)境中,hash環(huán)是不會變更的,因此,通過算出對象的hash值就可以快速的定位到對應的機器中,這樣就可以找到對象真實的存儲位置了。
機器的刪除與添加
普通hash求余算法最為不妥的地方就是在有機器的添加或刪除以后會照成大量的對象存儲位置失效,這樣就大大的不滿足單調(diào)性了。下面來分析1下1致性哈希算法是如何處理的。
1. 節(jié)點(機器)的刪除
以上面的散布為例,如果NODE2出現(xiàn)故障被刪除,那末依照順時針遷移的方法,object3將會被遷移到NODE3中,這樣僅僅是object3的映照位置產(chǎn)生了變化,其它的對象沒有任何的改動。以下圖:
這里寫圖片描述

2. 節(jié)點(機器)的添加
如果往集群中添加1個新的節(jié)點NODE4,通過對應的哈希算法得到KEY4,并映照到環(huán)中,以下圖:
這里寫圖片描述

通過按順時針遷移的規(guī)則,那末object2被遷移到了NODE4中,其它對象還保持這原本的存儲位置。通過對節(jié)點的添加和刪除的分析,1致性哈希算法在保持了單調(diào)性的同時,還是數(shù)據(jù)的遷移到達了最小,這樣的算法對散布式集群來講是非常適合的,避免了大量數(shù)據(jù)遷移,減小了服務器的的壓力。

平衡性
根據(jù)上面的圖解分析,1致性哈希算法滿足了單調(diào)性和負載均衡的特性和1般hash算法的分散性,但這還其實不能當作其被廣泛利用的緣由,由于還缺少了平衡性。下面將分析1致性哈希算法是如何滿足平衡性的。hash算法是不保證平衡的,如上面只部署了NODE1和NODE3的情況(NODE2被刪除的圖),object1存儲到了NODE1中,而object2、object3、object4都存儲到了NODE3中,這樣就照成了非常不平衡的狀態(tài)。在1致性哈希算法中,為了盡量的滿足平衡性,其引入了虛擬節(jié)點。
“虛擬節(jié)點”( virtual node )是實際節(jié)點(機器)在 hash 空間的復制品( replica ),1實際個節(jié)點(機器)對應了若干個“虛擬節(jié)點”,這個對應個數(shù)同樣成為“復制個數(shù)”,“虛擬節(jié)點”在 hash 空間中以hash值排列。
以上面只部署了NODE1和NODE3的情況(NODE2被刪除的圖)為例,之前的對象在機器上的散布很不均衡,現(xiàn)在我們以2個副本(復制個數(shù))為例,這樣全部hash環(huán)中就存在了4個虛擬節(jié)點,最后對象映照的關系圖以下:

這里寫圖片描述

根據(jù)上圖可知對象的映照關系:object1->NODE1⑴,object2->NODE1⑵,object3->NODE3⑵,object4->NODE3⑴。通過虛擬節(jié)點的引入,對象的散布就比較均衡了。那末在實際操作中,正真的對象查詢是如何工作的呢?對象從hash到虛擬節(jié)點到實際節(jié)點的轉(zhuǎn)換以下圖:
這里寫圖片描述

“虛擬節(jié)點”的hash計算可以采取對應節(jié)點的IP地址加數(shù)字后綴的方式。例如假定NODE1的IP地址為192.168.1.100。引入“虛擬節(jié)點”前,計算 cache A 的 hash 值:

Hash(“192.168.1.100”);

引入“虛擬節(jié)點”后,計算“虛擬節(jié)”點NODE1⑴和NODE1⑵的hash值:

Hash(“192.168.1.100#1”); // NODE1⑴ Hash(“192.168.1.100#2”); // NODE1⑵

版權聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产高清在线观看 | 一区二区91 | 亚洲图片一区二区 | 福利视频一区二区 | 99这里只有精品视频 | 九九九精品视频 | 久久精品久久综合 | 国产免费一区 | 精品国内 | 欧美一区二区三区啪啪 | 成年人视频在线免费观看 | 久久国产精品精品国产色婷婷 | 日韩精品视频在线 | 高清黄色毛片 | 欧美日韩1区2区3区 麻豆视频观看 | 久久嫩草 | 国产精品免费播放 | 日韩免费小视频 | 超碰2021 | 国产精品久久久久久久久久免费看 | 综合久久久 | 国产精品视频一区二区三区不卡 | 亚洲三级免费 | 五月天久久久久久九一站片 | 免费亚洲网站 | 亚洲成人av一区二区 | 天天操天天干天天 | 成人免费视频一区二区 | 国产高清一级毛片在线不卡 | 国产精品久久久久久吹潮 | 最新av网站在线观看 | 欧美精品一区在线观看 | 99精品视频免费在线观看 | 97欧美| 在线综合国产 | 三级精品 | 最新国产精品精品视频 | 亚洲天堂偷拍 | 国产精品一区二区久久久 | 黄色特级片 | 午夜免费av |