1. 程式人生 > >關於什麼是一致性hash演算法

關於什麼是一致性hash演算法

當需要分散式快取的時候,通過key的hash值分散資料儲存hash(n)%快取伺服器臺數,同時也可以快速查詢資料而不用遍歷所有的伺服器。如下圖:

但是這樣,當業務拓展想要增加一臺伺服器的話,要麼快取伺服器資料全部需要重新計算儲存 -----hash(n)%5 。 要麼需要遍歷所有快取伺服器。不夠靈活。

所以就出現了一致性hash演算法,來解決這樣的問題。

Hash環,如下圖所示:

一致性Hash演算法是key的hash值,對2^32取模,對伺服器確定確定此資料在環上的位置(比如A,B,C,D)。

資料進來後對2^32 取模,得到一個值K1,在Hash環中順時針找到伺服器節點。

假如B伺服器節點失效:

如果是B失效了,將B的資料遷移至C即可,對於原本雜湊在A和D的資料,不需要做任何改變。

總結:一致性hash演算法(DHT)通過減少影響範圍的方式解決了增減伺服器導致的資料雜湊問題,從而解決了分散式環境下負載均衡問題。