假如有cache主機5臺分別為cachea、cacheb、cachec、cached、cachee
當程式進行hash時,首先每個節點要根據自己的唯一引數雜湊出乙個值來(如根據ip進行雜湊)
主機雜湊完成後形成的雜湊值如下
cachea 0
cacheb 1
cachec 2
cached 3
cachee 4
主機形成雜湊值後,我們以快取來做例項,比如某個使用者登入後會有乙個唯一的pin值,然後根據
這個pin值進行hash求餘。因為求餘是用5來求餘,所以數值肯定會小宇5 因此就有了落點,然後把
快取資料進行快取到落點伺服器中
假如有cache主機5臺分別為cachea、cacheb、cachec、cached、cachee
當程式進行hash時,首先每個節點要根據自己的唯一引數雜湊出乙個值來(如根據ip進行雜湊)
主機雜湊完成後形成的雜湊值如下
cachea key1
cacheb key2
cachec key3
cached key4
cachee key5
然後5臺節點圍繞稱乙個環形,如圖:
主機形成雜湊值後,我們以快取來做例項,比如某個使用者登入後會有乙個唯一的pin值,然後根據
這個pin值進行hash。這裡注意和普通hash不一樣的就是這裡只hash不求餘,當hash出乙個數值
後,檢視這個這個值介於那兩個值之間比如介於key4和key5之間,然後從這個落點開始順時針查
找遇到第乙個cache伺服器後就把這個伺服器當作此次快取的落點,從而把這個快取放到這個落點
上。如圖:
經過上面的介紹我們能看出,假如普通的雜湊當其中任意一台機器down掉後,我們整個的
快取都將安然無存,為什麼這麼說呢?
因為當某台cache down掉後我們需要重選算落點,除數已經變了,所以都要重新set快取,
當然不排除有一些兩個pin值算的落點是一樣的,但是當cache伺服器增加到一定數量後,前面所
說的可能性幾乎為0,所以稱之為全部快取都要重新set。
而使用一致性雜湊當其中一台機器down掉後,只有它上面到它這一段的環路快取失效了,如:
當cache3 down掉後,那落掉在cache2到cache3之間的pin都將失效,那麼失效的落點講繼續順時
針查詢cache伺服器,那麼新的落點都將落到cache4上。 注:
對一致性雜湊的理解
一致性hash演算法 - consistent hashing
一致性雜湊
直接貼出一篇介紹的很清楚的博文。關鍵字一致性雜湊 平衡性,單調性,分散性,負載 其實說白了,就是解決把請求分散到不同的機器上運算,怎麼做分散的平均,機器少一台多一台,或者壞掉一台,成很好的自適應和拓展。最簡單的實現分布式演算法,取模嘛,但是它就上述的一些問題,所以不算好的雜湊函式。一致性雜湊演算法,...
一致性雜湊
from 學習分布式,一致性雜湊是最最基礎的知識,所以要理解好.那什麼是一致性雜湊呢?what 1.平衡性是指 hash的結果應該平均分配到各個節點,這樣從演算法上就解決了負載均衡問題.2.單調性是指 在新增或者刪減節點時,同乙個key訪問到的值總是一樣的.3.分散性是指 資料應該分散的存放在 分布...
一致性雜湊
一致性 雜湊演算法在1997年由 麻省理工學院提出 參見擴充套件閱讀 1 設計目標是為了解決網際網路中的熱點 hot spot 問題,初衷和 carp十分類似。一致性雜湊修正了carp使用的簡單雜湊演算法帶來的問題,使得dht可以在p2p環境中真正得到應用。雜湊演算法 編輯 一致性雜湊提出了在動態變...