溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

一致性哈希算法的理解

發布時間:2020-07-27 18:07:59 來源:網絡 閱讀:2861 作者:cnn237111 欄目:編程語言

版權聲明: 本文由 一只博客 發表于?bloghome博客

文章鏈接:?https://www.bloghome.com.cn/user/cnn237111

關于一致性哈希算法,網上有很多博文都有講解。推薦2個。

http://blog.codinglabs.org/articles/consistent-hashing.html

http://blog.csdn.net/cywosp/article/details/23397179

總結一下:

  1. 網上博文的例子都將hash值的結果定義在0 - 232-1,實際上也是非必要的,你可以設定的比這個范圍小,或者比這個范圍大,都是可以的,重要的是它是一個環。


2.一致性哈希并不保證節點被映射的均衡性,假設哈希值是均衡的,那么節點要被均衡的映射,就必須讓各個節點之間的距離相等,也就是說各個節點平分環的周長。


3.當存在故障節點后,一致性哈希并不保證故障節點上的值能通過算法恢復(除非已實現主備機制)


4.當故障節點被移除,故障節點的下一個節點的壓力會增加(如果各個節點的壓力是均衡的,那么壓力增加1倍)。


5.當插入新節點,一致性哈希算法并不能避免重新hash步驟,但是不需要把所有的數據都重新hash一遍,只需要hash一部分。這種方式將hash的范圍減到最小,僅僅是將新節點的前一個節點的一部分數據,歸還給新節點。


6,當哈希算法的值不均衡時,環上的各個節點的壓力也是不均衡的??梢圆捎锰砑犹摂M節點的方式,使平衡??梢栽跓狳c節點的后面,插入多個虛擬節點,一旦映射落到虛擬節點上,再通過其他的hash算法,映射到壓力較低的節點。采用的算法可以是簡單粗暴,比如舉個栗子:

如下圖,在沒有虛擬節點的時候,假設由于hash算法的不均衡性,落在節點4和節點5的hash值特別多,勢必造成節點5的壓力比較大,而此時如果節點6和節點2的壓力有比較小,那么在節點4和節點5之間插入2個虛擬節點(節點a和節點b),根據一致性哈希的算法,節點a和節點5之間的hash值落到節點5上,節點a和節點b的hash值落在節點a上,節點b和節點4之間的hash落在節點b上。但是節點a和節點b是虛擬節點,因此可以強制的讓節點a映射到節點6,節點b強制映射到節點2,這樣,節點5的壓力會減輕,從而使得所有節點負載相對均衡。

一致性哈希算法的理解

以上是一些總結,如有不對,歡迎指出糾正。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女