大神的分享,我寫下自己的一些理解
首先,思考乙個問題:你有乙個億級訪問量的**,每天每小時每分鐘有大量的資料在傳輸,存讀資料庫非常頻繁,伺服器的壓力很大。然後我們的解決方案是什麼:快取,memcache,redis。那麼,問題來了,你有10臺快取伺服器,想象一下:一條資料來了要寫,寫到哪台伺服器上去;乙個請求來了,要取一條資料,從哪台伺服器取?讀、取資料如何合理的選擇伺服器?
常規的解決方案是:隨機,隨機選擇伺服器
但是會帶來問題,(1)資料冗餘,同乙份資料可能冗餘存在於多台伺服器上(因為每次選擇讀/取的伺服器是完全隨機的)
(2)資料訪問失敗:資料存在與server1上,但是讀取的時候隨機到了server2上,所以就會讀不到資料
這顯然是乙個很嚴重的問題
解決方案:
一致性雜湊環---(當然這也是一種相對的解決方案,但是基本已經可以解決實際中的場景,演算法的缺陷還可以通過實際場景中的做一些彌補)
一致性雜湊環存在的問題:分配不均衡
解決方案:
虛擬節點(找下乙個節點,為什麼不用就近原則去找,因為就近的原則還是不能均衡的)
**實現:
參考github:
一致性雜湊
直接貼出一篇介紹的很清楚的博文。關鍵字一致性雜湊 平衡性,單調性,分散性,負載 其實說白了,就是解決把請求分散到不同的機器上運算,怎麼做分散的平均,機器少一台多一台,或者壞掉一台,成很好的自適應和拓展。最簡單的實現分布式演算法,取模嘛,但是它就上述的一些問題,所以不算好的雜湊函式。一致性雜湊演算法,...
一致性雜湊
from 學習分布式,一致性雜湊是最最基礎的知識,所以要理解好.那什麼是一致性雜湊呢?what 1.平衡性是指 hash的結果應該平均分配到各個節點,這樣從演算法上就解決了負載均衡問題.2.單調性是指 在新增或者刪減節點時,同乙個key訪問到的值總是一樣的.3.分散性是指 資料應該分散的存放在 分布...
一致性雜湊
一致性 雜湊演算法在1997年由 麻省理工學院提出 參見擴充套件閱讀 1 設計目標是為了解決網際網路中的熱點 hot spot 問題,初衷和 carp十分類似。一致性雜湊修正了carp使用的簡單雜湊演算法帶來的問題,使得dht可以在p2p環境中真正得到應用。雜湊演算法 編輯 一致性雜湊提出了在動態變...