![一致性哈希算法_第1頁](http://file4.renrendoc.com/view/8486b8c2470ea0813dbda459adec3fe3/8486b8c2470ea0813dbda459adec3fe31.gif)
![一致性哈希算法_第2頁](http://file4.renrendoc.com/view/8486b8c2470ea0813dbda459adec3fe3/8486b8c2470ea0813dbda459adec3fe32.gif)
![一致性哈希算法_第3頁](http://file4.renrendoc.com/view/8486b8c2470ea0813dbda459adec3fe3/8486b8c2470ea0813dbda459adec3fe33.gif)
![一致性哈希算法_第4頁](http://file4.renrendoc.com/view/8486b8c2470ea0813dbda459adec3fe3/8486b8c2470ea0813dbda459adec3fe34.gif)
![一致性哈希算法_第5頁](http://file4.renrendoc.com/view/8486b8c2470ea0813dbda459adec3fe3/8486b8c2470ea0813dbda459adec3fe35.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、一致性哈希算法: 一致性哈希算法在1997年由麻省理工學(xué)院提出的一種分布式哈希(DHT)實現(xiàn) 算法,設(shè)計目標(biāo)是為了解決因特網(wǎng)中的熱點(Hot spot)問題,初衷和CARP十 分類似。一致性哈希修正了 CARP使用的簡單哈希算法帶來的問題,使得分布 式哈希(DHT)可以在P2P環(huán)境中真正得到應(yīng)用。一致性hash算法提出了在動態(tài)變化的Cache環(huán)境中,判定哈希算法好壞的四 個定義:1、平衡性(Balance):平衡性是指哈希的結(jié)果能夠盡可能分布到所有的緩沖中 去,這樣可以使得所有的緩沖空間都得到利用。很多哈希算法都能夠滿足這一 條件。2、單調(diào)性(Monotonicity):單調(diào)性是指如果已經(jīng)有一
2、些內(nèi)容通過哈希分派到 了相應(yīng)的緩沖中,又有新的緩沖加入到系統(tǒng)中。哈希的結(jié)果應(yīng)能夠保證原有已 分配的內(nèi)容可以被映射到原有的或者新的緩沖中去,而不會被映射到舊的緩沖 集合中的其他緩沖區(qū)。3、分散性(Spread):在分布式環(huán)境中,終端有可能看不到所有的緩沖,而是 只能看到其中的一部分。當(dāng)終端希望通過哈希過程將內(nèi)容映射到緩沖上時,由 于不同終端所見的緩沖范圍有可能不同,從而導(dǎo)致哈希的結(jié)果不一致,最終的 結(jié)果是相同的內(nèi)容被不同的終端映射到不同的緩沖區(qū)中。這種情況顯然是應(yīng)該 避免的,因為它導(dǎo)致相同內(nèi)容被存儲到不同緩沖中去,降低了系統(tǒng)存儲的效率。 分散性的定義就是上述情況發(fā)生的嚴(yán)重程度。好的哈希算法應(yīng)能夠
3、盡量避免不 一致的情況發(fā)生,也就是盡量降低分散性。4、負(fù)載(Load):負(fù)載問題實際上是從另一個角度看待分散性問題。既然不同 的終端可能將相同的內(nèi)容映射到不同的緩沖區(qū)中,那么對于一個特定的緩沖區(qū) 而言,也可能被不同的用戶映射為不同 的內(nèi)容。與分散性一樣,這種情況也 是應(yīng)當(dāng)避免的,因此好的哈希算法應(yīng)能夠盡量降低緩沖的負(fù)荷。在分布式集群中,對機(jī)器的添加刪除,或者機(jī)器故障后自動脫離集群這 些操作是分布式集群管理最基本的功能。如果采用常用的hash(object)%N算法,那么在有機(jī)器添加或者刪除后,很多原有的數(shù)據(jù)就無法找到了,這樣嚴(yán)重 的違反了單調(diào)性原則。接下來主要講解一下一致性哈希算法是如何設(shè)計的
4、:環(huán)形Hash空間按照常用的hash算法來將對應(yīng)的key哈希到一個具有223次方個桶的空間中, 即0223-1的數(shù)字空間中?,F(xiàn)在我們可以將這些數(shù)字頭尾相連,想象成一個閉 合的環(huán)形。如下圖把數(shù)據(jù)通過一定的hash算法處理后映射到環(huán)上現(xiàn)在我們將objectl、object2、object3、object4四個對象通過特定的Hash函數(shù)計算出對應(yīng)的key值,然后散列到Hash環(huán)上。如下圖:Hash(objectl) = keyl ;Hash(object2) = key2;Hash(object3) = key3;Hash(object4) = key4;將機(jī)器通過hash算法映射到環(huán)上在采用一致性
5、哈希算法的分布式集群中將新的機(jī)器加入,其原理是通過使用與 對象存儲一樣的Hash算法將機(jī)器也映射到環(huán)中(一般情況下對機(jī)器的hash計 算是采用機(jī)器的IP或者機(jī)器唯一的別名作為輸入值),然后以順時針的方向 計算,將所有對象存儲到離自己最近的機(jī)器中。假設(shè)現(xiàn)在有NODE1,NODE2,NODE3三臺機(jī)器,通過Hash算法得到對應(yīng)的KEY值,映射到環(huán)中,其示意圖如下:Hash(NODEI)二 KEY1;Hash(NODE2)二 KEY2;Hash(NODE3)二 KEY3;/ objecri cobject通過上圖可以看出對象與機(jī)器處于同一哈希空間中,這樣按順時針轉(zhuǎn)動objectl 存儲到 了 NOD
6、E1 中,object3 存儲到 了 NODE2 中,object2、object4 存儲到了 NODE3中。在這樣的部署環(huán)境中,hash環(huán)是不會變更的,因此,通 過算出對象的hash值就能快速的定位到對應(yīng)的機(jī)器中,這樣就能找到對象真 正的存儲位置了。機(jī)器的刪除與添加普通hash求余算法最為不妥的地方就是在有機(jī)器的添加或者刪除之后會照成 大量的對象存儲位置失效,這樣就大大的不滿足單調(diào)性了。下面來分析一下一 致性哈希算法是如何處理的。1.節(jié)點(機(jī)器)的刪除以上面的分布為例,如果NODE2出現(xiàn)故障被刪除了,那么按照順時針遷 移的方法,object3將會被遷移到NODE3中,這樣僅僅是object3
7、的映射位置HashKEY1object4bjectZbject3NODE2發(fā)生了變化,其它的對象沒有任何的改動。如下圖:2.節(jié)點(機(jī)器)的添加bj&ctlNODE132-1NODES如果往集群中添加一個新的節(jié)點NODE4,通過對應(yīng)的哈希算法得到KEY4,HashKE1KEYSKEYN0DE4并映射到環(huán)中,如下圖:通過按順時針遷移的規(guī)則,那么object2被遷移到了 NODE4中,其它對廣 objectlNODE3/,可object4bject2NODE1 、232-1物3。通ct3NODE2象還保持這原有的存儲位置。通過對節(jié)點的添加和刪除的分析,一致性哈希算 法在保持了單調(diào)性的同時,還使數(shù)據(jù)的
8、遷移達(dá)到了最小,這樣的算法對分布式 集群來說是非常合適的,避免了大量數(shù)據(jù)遷移,減小了服務(wù)器的的壓力。平衡性根據(jù)上面的圖解分析,一致性哈希算法滿足了單調(diào)性和負(fù)載均衡的特性以及一 般hash算法的分散性,但這還并不能當(dāng)做其被廣泛應(yīng)用的原由,因為還缺少 了平衡性。下面將分析一致性哈希算法是如何滿足平衡性的。hash算法是不 保證平衡的,如上面只部署了 NODE1和NODE3的情況(NODE2被刪除的圖), objectl 存儲到 了 NODE1 中,而 object?. object3、object4 都存儲到 了 NODE3 中,這樣就照成了非常不平衡的狀態(tài)。在一致性哈希算法中,為了盡可能的滿 足
9、平衡性,其引入了虛擬節(jié)點?!疤摂M節(jié)點” (virtual node )是實際節(jié)點(機(jī)器)在hash空 間的復(fù)制品(replica ),一實際個節(jié)點(機(jī)器)對應(yīng)了若干個“虛擬節(jié)點”, 這個對應(yīng)個數(shù)也成為“復(fù)制個數(shù)”,“虛擬節(jié)點”在hash空間中以hash值 排列。以上面只部署了 NODE1和NODE3的情況(NODE2被刪除的圖)為例,之前的對 象在機(jī)器上的分布很不均衡,現(xiàn)在我們以2個副本(復(fù)制個數(shù))為例,這樣整 個hash環(huán)中就存在了 4個虛擬節(jié)點,最后對象映射的關(guān)系圖如下:根據(jù)上圖可知對象的映射關(guān)系:object1-NODE1-1, object2-NODE1-2,object3-NODE3-2, object4-NODE3-1。通過虛擬節(jié)點的引入,對象的分布就比較均衡了。那么在實際操作中,真正的對象查詢是如何工作的呢?對象從hash到虛擬節(jié)點到實際節(jié)點的轉(zhuǎn)換如下圖:“虛擬節(jié)點”的hash計算可以采用對應(yīng)節(jié)點的IP地址加數(shù)字后綴的方式。例如假設(shè)NODE1的IP地址為192.168.1.100。引入“虛擬節(jié)點
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 代理裝修設(shè)計合同范本
- vr全景制作合同范本
- 光熱分包合同范本
- 運(yùn)動休閑服裝項目可行性研究報告
- 2025年度建設(shè)工程交易服務(wù)中心建筑拆除工程合同
- 分期貨款合同范例
- 勞務(wù)及銷售合同范本
- 乙方包工合同范例
- 2025年度野生菌類采集與保護(hù)利用合同
- 保護(hù)乙方施工合同范例
- 七年級英語閱讀理解55篇(含答案)
- 職位管理手冊
- IPQC首檢巡檢操作培訓(xùn)
- 餐飲空間設(shè)計課件ppt
- 肉制品加工技術(shù)完整版ppt課件全套教程(最新)
- (中職)Dreamweaver-CC網(wǎng)頁設(shè)計與制作(3版)電子課件(完整版)
- 新部編版四年級下冊小學(xué)語文全冊課件PPT
- 行政人事助理崗位月度KPI績效考核表
- 主動脈夾層的護(hù)理-ppt課件
- 紀(jì)檢監(jiān)察機(jī)關(guān)派駐機(jī)構(gòu)工作規(guī)則全文詳解PPT
- BP-2C 微機(jī)母線保護(hù)裝置技術(shù)說明書 (3)
評論
0/150
提交評論