溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

什么是一致性哈希

發(fā)布時間:2020-07-31 10:13:36 來源:億速云 閱讀:121 作者:Leah 欄目:互聯(lián)網(wǎng)科技

什么是一致性哈希?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

一致性哈希算法在1997年由麻省理工學(xué)院提出,是一種特殊的哈希算法,目的是解決分布式緩存的問題,在移除或者添加一個服務(wù)器時,能夠盡可能小地改變已存在的服務(wù)請求與處理請求服務(wù)器之間的映射關(guān)系。

一致性哈希算法在1997年由麻省理工學(xué)院提出,是一種特殊的哈希算法,目的是解決分布式緩存的問題。在移除或者添加一個服務(wù)器時,能夠盡可能小地改變已存在的服務(wù)請求與處理請求服務(wù)器之間的映射關(guān)系。一致性哈希解決了簡單哈希算法在分布式哈希表( Distributed Hash Table,DHT) 中存在的動態(tài)伸縮等問題。

簡介:

一致性哈希算法是1997年在論文Consistenthashingandrandomtrees中被提出,在分布式系統(tǒng)中應(yīng)用非常廣泛。一致性哈希是一種哈希算法,簡單地說在移除或者添加一個服務(wù)器時,此算法能夠盡可能小地改變已存在的服務(wù)請求與處理請求服務(wù)器之間的映射關(guān)系,盡可能滿足單調(diào)性的要求。在普通分布式集群中,服務(wù)請求與處理請求服務(wù)器之間可以一一對應(yīng),也就是說固定服務(wù)請求與處理服務(wù)器之間的映射關(guān)系,某個請求由固定的服務(wù)器去處理。這種方式無法對整個系統(tǒng)進(jìn)行負(fù)載均衡,可能會造成某些服務(wù)器過于繁忙以至于無法處理新來的請求。而另一些服務(wù)器則過于空閑,整體系統(tǒng)的資源利用率低,并且當(dāng)分布式集群中的某個服務(wù)器宕機(jī),會直接導(dǎo)致某些服務(wù)請求無法處理 。

進(jìn)一步的改進(jìn)可以利用hash算法對服務(wù)請求與處理服務(wù)器之間的關(guān)系進(jìn)行映射,以達(dá)到動態(tài)分配的目的。通過hash算法對服務(wù)請求進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換后的結(jié)果對服務(wù)器節(jié)點值進(jìn)行取模運(yùn)算,取模后的值就是服務(wù)請求對應(yīng)的請求處理服務(wù)器。這種方法可以應(yīng)對節(jié)點失效的情況,當(dāng)某個分布式集群節(jié)點宕機(jī),服務(wù)請求可以通過hash算法重新分配到其他可用的服務(wù)器上。避免了無法處理請求的狀況出現(xiàn) 。

但這種方法的缺陷也很明顯,如果服務(wù)器中保存有服務(wù)請求對應(yīng)的數(shù)據(jù),那么如果重新計算請求的hash值,會造成大量的請求被重定位到不同的服務(wù)器而造成請求所要使用的數(shù)據(jù)失效,這種情況在分布式系統(tǒng)中是非常糟糕的。一個設(shè)計良好的分布式系統(tǒng)應(yīng)該具有良好的單調(diào)性,即服務(wù)器的添加與移除不會造成大量的哈希重定位,而一致性哈希恰好可以解決這個問題。

一致性哈希算法將整個哈希值空間映射成一個虛擬的圓環(huán),整個哈??臻g的取值范圍為0~232-1。整個空間按順時針方向組織。0~232-1在零點中方向重合。接下來使用如下算法對服務(wù)請求進(jìn)行映射,將服務(wù)請求使用哈希算法算出對應(yīng)的hash值,然后根據(jù)hash值的位置沿圓環(huán)順時針查找,第一臺遇到的服務(wù)器就是所對應(yīng)的處理請求服務(wù)器。當(dāng)增加一臺新的服務(wù)器,受影響的數(shù)據(jù)僅僅是新添加的服務(wù)器到其環(huán)空間中前一臺的服務(wù)器(也就是順著逆時針方向遇到的第一臺服務(wù)器)之間的數(shù)據(jù),其他都不會受到影響。綜上所述,一致性哈希算法對于節(jié)點的增減都只需重定位環(huán)空間中的一小部分?jǐn)?shù)據(jù),具有較好的容錯性和可擴(kuò)展性。

特點:

  • 可擴(kuò)展性。一致性哈希算法保證了增加或減少服務(wù)器時,數(shù)據(jù)存儲的改變最少,相比傳統(tǒng)哈希算法大大節(jié)省了數(shù)據(jù)移動的開銷。

  • 更好地適應(yīng)數(shù)據(jù)的快速增長。采用一致性哈希算法分布數(shù)據(jù),當(dāng)數(shù)據(jù)不斷增長時,部分虛擬節(jié)點中可能包含很多數(shù)據(jù)、造成數(shù)據(jù)在虛擬節(jié)點上分布不均衡,此時可以將包含數(shù)據(jù)多的虛擬節(jié)點分裂,這種分裂僅僅是將原有的虛擬節(jié)點一分為二、不需要對全部的數(shù)據(jù)進(jìn)行重新哈希和劃分。虛擬節(jié)點分裂后,如果物理服務(wù)器的負(fù)載仍然不均衡,只需在服務(wù)器之間調(diào)整部分虛擬節(jié)點的存儲分布。這樣可以隨數(shù)據(jù)的增長而動態(tài)的擴(kuò)展物理服務(wù)器的數(shù)量,且代價遠(yuǎn)比傳統(tǒng)哈希算法重新分布所有數(shù)據(jù)要小很多。

關(guān)于什么是一致性哈希問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI