一致性雜湊演算法

2021-10-08 07:54:02 字數 400 閱讀 9961

傳統的資料路由/分片的做法是將key的雜湊值對n取模,n為槽位數(槽位數即機器數)。這種方案的問題在於最終的路由結果會跟著機器數量的變化而變化(擴容、縮容和宕機等),從而導致請求查詢不到資料或者請求出錯等情況。

問題:機器數作為槽位數,當機器數量發生變化時,導致大量請求重雜湊。

演算法思想:槽位數取無限大的固定值,不再與機器數產生關聯,如下圖所示,這樣無論機器數量如何變化,請求的雜湊結果是不變的。機器與槽位的關係既可以通過演算法分配,比如均分、平均輪詢等,也可以通過對映表來維護對映關係。

參考一致性雜湊演算法及其在分布式系統中的應用

一致性雜湊演算法

好吧,我們決定打破這種基於資料項商業邏輯的劃分思維,來考慮一種基於 key 的劃分方式,這有些類似於後面介紹的資料庫水平分割槽 sharding 我們需要設計一種不依賴資料項內容的雜湊演算法,將所有資料項的 key 均衡分配在這三颱快取伺服器上。乙個簡單而有效的方法是 取餘 運算,這就像打撲克時的發...

一致性雜湊演算法

在分布式系統中,如果某業務可以由多個相同的節點處理,很容易想到用hash的方式將業務請求分散到這些節點處理,如果有n個節點,計算方法為 hash id n。如果只是簡單的計算,不涉及使用者狀態,這是乙個簡單有效的方案。如果節點的計算涉及使用者狀態,比如維護購物車 memcache快取服務等,好像也沒...

一致性雜湊演算法

判定好壞的四個定義 1 平衡性 balance 平衡性是指雜湊的結果能夠盡可能分布到所有的緩衝中去,這樣可以使得所有的緩衝空間都得到利用。很多雜湊演算法都能夠滿足這一條件。2 單調性 monotonicity 單調性是指如果已經有一些內容通過雜湊分派到了相應的緩衝中,又有新的緩衝加入到系統中。雜湊的...