資料結構 為什麼要使用一致性雜湊演算法?

2022-05-10 15:18:00 字數 984 閱讀 8550

話不多說,先看個案例:

我們有乙個分布式快取,此時我們有3萬張要存入快取中。

餘數可以對應到相應的快取節點,但是這樣有乙個缺陷

如果我們新增乙個節點【s4】,可以發現乙個這樣的問題,有乙個對應id為6:

以前:6%3=0 -->s0

現在:6%4=2 -->s2

由於伺服器數量的改變,導致大量快取失效,請求只能直接查詢資料庫,導致資料庫容易被壓垮

策略是採取乙個hash環,然後id取模,找到最近的節點。

此時我們增加乙個節點【s4】,會出現什麼情況呢?

最終也只是會影響到上圖中圈出來的位置資料,影響範圍不會很大。

節點可能會出現【雜湊偏斜】情況,即所有的節點都偏斜到一側,導致【s0】節點快取資料較多,快取分布不均勻。

解決方式:可以採用增加虛擬節點的方式,是節點分布盡量均勻,從而解決快取不均勻的問題。

一致性雜湊

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

一致性雜湊

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

一致性雜湊

一致性 雜湊演算法在1997年由 麻省理工學院提出 參見擴充套件閱讀 1 設計目標是為了解決網際網路中的熱點 hot spot 問題,初衷和 carp十分類似。一致性雜湊修正了carp使用的簡單雜湊演算法帶來的問題,使得dht可以在p2p環境中真正得到應用。雜湊演算法 編輯 一致性雜湊提出了在動態變...