1. 程式人生 > >一致性雜湊演算法的基本原理-如何解決雜湊傾斜問題

一致性雜湊演算法的基本原理-如何解決雜湊傾斜問題

在日常工作中,經常有這樣的情況,我們需要做hash,雜湊開資料到不同的區或節點。目標要的結果是要均勻雜湊,避免某個節點積累大量的資料,出現傾斜情況。

比如目前有N臺機器,過來的資料key,需要做雜湊key%N,分發到對應的節點上。

一致性雜湊演算法原理

 為了解決hash傾斜難題,一致性演算法是這樣的,節點和節點形成一個環。比如

A->B->C->A,這樣一個環。數字hash後落在環上,而不是落到某個node。比如落在a~b node之間,通過順時針轉,這個數字歸b節點管。

但是如果節點很少,同樣容易出現傾斜,負載不均衡問題。所以一致性雜湊演算法,引入了虛擬節點,在整個環上,均衡增加若干個節點。比如a1,a2,b1,b2,c1,c2,a1和a2都是屬於A節點的。

通過讓閉環上的節點增加,來平衡各個節點雜湊的值。