十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
什么是一致性哈希?針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
公司主營業(yè)務(wù):做網(wǎng)站、網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出定遠免費做網(wǎ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)進行負載均衡,可能會造成某些服務(wù)器過于繁忙以至于無法處理新來的請求。而另一些服務(wù)器則過于空閑,整體系統(tǒng)的資源利用率低,并且當分布式集群中的某個服務(wù)器宕機,會直接導(dǎo)致某些服務(wù)請求無法處理 。
進一步的改進可以利用hash算法對服務(wù)請求與處理服務(wù)器之間的關(guān)系進行映射,以達到動態(tài)分配的目的。通過hash算法對服務(wù)請求進行轉(zhuǎn)換,轉(zhuǎn)換后的結(jié)果對服務(wù)器節(jié)點值進行取模運算,取模后的值就是服務(wù)請求對應(yīng)的請求處理服務(wù)器。這種方法可以應(yīng)對節(jié)點失效的情況,當某個分布式集群節(jié)點宕機,服務(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),整個哈希空間的取值范圍為0~232-1。整個空間按順時針方向組織。0~232-1在零點中方向重合。接下來使用如下算法對服務(wù)請求進行映射,將服務(wù)請求使用哈希算法算出對應(yīng)的hash值,然后根據(jù)hash值的位置沿圓環(huán)順時針查找,第一臺遇到的服務(wù)器就是所對應(yīng)的處理請求服務(wù)器。當增加一臺新的服務(wù)器,受影響的數(shù)據(jù)僅僅是新添加的服務(wù)器到其環(huán)空間中前一臺的服務(wù)器(也就是順著逆時針方向遇到的第一臺服務(wù)器)之間的數(shù)據(jù),其他都不會受到影響。綜上所述,一致性哈希算法對于節(jié)點的增減都只需重定位環(huán)空間中的一小部分數(shù)據(jù),具有較好的容錯性和可擴展性。
特點:
可擴展性。一致性哈希算法保證了增加或減少服務(wù)器時,數(shù)據(jù)存儲的改變最少,相比傳統(tǒng)哈希算法大大節(jié)省了數(shù)據(jù)移動的開銷。
更好地適應(yīng)數(shù)據(jù)的快速增長。采用一致性哈希算法分布數(shù)據(jù),當數(shù)據(jù)不斷增長時,部分虛擬節(jié)點中可能包含很多數(shù)據(jù)、造成數(shù)據(jù)在虛擬節(jié)點上分布不均衡,此時可以將包含數(shù)據(jù)多的虛擬節(jié)點分裂,這種分裂僅僅是將原有的虛擬節(jié)點一分為二、不需要對全部的數(shù)據(jù)進行重新哈希和劃分。虛擬節(jié)點分裂后,如果物理服務(wù)器的負載仍然不均衡,只需在服務(wù)器之間調(diào)整部分虛擬節(jié)點的存儲分布。這樣可以隨數(shù)據(jù)的增長而動態(tài)的擴展物理服務(wù)器的數(shù)量,且代價遠比傳統(tǒng)哈希算法重新分布所有數(shù)據(jù)要小很多。
關(guān)于什么是一致性哈希問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。