一致性雜湊的介紹

2021-09-25 02:52:33 字數 775 閱讀 7946

適用場景:快取集群環境下

出現背景:

1.初始階段:通過隨機訪問方式進行,將乙個資料隨機存入集群的一台伺服器中,當使用到這個快取資料的時候,不知道從集群哪台伺服器中取資料,也無法判斷有沒有這個資料,導致資料冗餘,而且伺服器數量越多,導致的訪問冗餘次數無法估量。

2.中期階段:由隨機轉向雜湊取餘,首先將乙個資料存入集群伺服器中,這個資料的key name作為這個資料的唯一標誌,然後通過這個key name得到雜湊值,接著取餘,比如集群伺服器有3臺,用0,1,2作為他們的標識,hash % 3 得到標識,與伺服器標識匹配,就可以把這資料存入該伺服器,取的時候也通過key name 雜湊取餘匹配主機,從而找到快取的資料。 但是這種方式也會出現一些問題,就是當某台主機宕掉或者增加一台主機的時候,導致無法匹配到原先存入資料的主機,導致大量資料失效。

3.發展階段:由雜湊取餘轉向一致性雜湊,一致性雜湊就是通過將整個雜湊值組織成乙個虛擬的圓環,且按順時針方向組織,各伺服器主機通過其唯一標誌(ip或主機名)得到雜湊值,在這個圓環中佔坑,作為乙個固定的節點,接著將乙個資料存入,通過key name得到雜湊值,形象地固定在環中某位置,順時針查詢找到第乙個主機佔坑位置,就把這個資料存入該主機中,取資料也是類似。若出現某台主機宕機了或者要增加某個主機,存入這個集群各個主機的資料會不會出現取資料失效,可以知道增加或減少一台主機,只是從逆時針方向找到第乙個主機的區間快取資料失效,其餘均不變。但是這種方式也會出現一些極端情況出現,就是伺服器佔坑的位置非常接近,導致伺服器在這圓環中資料匹配的區間差距很大。

4.後期階段:採用虛擬節點來解決節點分部不均勻而造成資料傾斜的問題。

一致性雜湊演算法介紹

一致性雜湊演算法在1997年由麻省理工學院提出的一種分布式雜湊 dht 實現演算法,設計目標是為了解決網際網路中的熱點 hot spot 問題,初衷和carp十分類似。一致性雜湊修正了carp使用的簡 單雜湊演算法帶來的問題,使得分布式雜湊 dht 可以在p2p環境中真正得到應用。一致性hash演算...

一致性雜湊

直接貼出一篇介紹的很清楚的博文。關鍵字一致性雜湊 平衡性,單調性,分散性,負載 其實說白了,就是解決把請求分散到不同的機器上運算,怎麼做分散的平均,機器少一台多一台,或者壞掉一台,成很好的自適應和拓展。最簡單的實現分布式演算法,取模嘛,但是它就上述的一些問題,所以不算好的雜湊函式。一致性雜湊演算法,...

一致性雜湊

from 學習分布式,一致性雜湊是最最基礎的知識,所以要理解好.那什麼是一致性雜湊呢?what 1.平衡性是指 hash的結果應該平均分配到各個節點,這樣從演算法上就解決了負載均衡問題.2.單調性是指 在新增或者刪減節點時,同乙個key訪問到的值總是一樣的.3.分散性是指 資料應該分散的存放在 分布...