一致性hash演算法

2021-10-06 13:26:19 字數 806 閱讀 2690

如下圖所示,一旦下標為2的伺服器,即tomcat 3發生宕機了,則伺服器的數量發生了變化,由3變為2,最後hash演算法的結果也發生更改,比如:5%3=2變為了5%2=1,所有的請求都要重新進行求模運算,最後導致使用者在原來伺服器裡面的會話發生丟失,響應的資料快取也丟失。

如下圖所示,將一組數字組裝成乙個環形,假設有一台伺服器,它的ip位址經過hash演算法計算後的結果放到環形中,隨後,所有的伺服器節點都順時針的放在環形的特定位置中。然後,使用者的ip位址的hash值也對映到環形中,按照順時針查詢,離哪個節點近就訪問哪個節點,如圖所示的兩個使用者,按照順時針查詢會找到節點1。

假設節點3發生宕機,原本應該訪問節點3的使用者則按照順時針的方向訪問到節點4,如下圖所示:

假設,在節點2和節點3之間增加了一台伺服器2.5,本來有兩個使用者訪問節點3,由於其中乙個使用者裡節點2.5更近,另外乙個使用者離節點3更近,所以最後只改變了乙個使用者的會話。

但是其餘的使用者訪問沒有變化,所以一致性hash演算法最大程度上降低了伺服器增加減少造成的影響,保證絕大多數的請求仍然在原來的伺服器上。

一致性hash演算法 面試必備 一致性hash演算法

最近公司在招人,我們準備的問題中有一道是關於一致性hash演算法的問題,只有一些面試者能夠回答上來,而且答的也不是很全面,有的面試者只是聽說過,有的連聽都沒聽過,下面我把一致性hash演算法整理一下分享給大家 一致性雜湊演算法在1997年由麻省理工學院的karger等人在解決分布式cache中提出的...

一致性hash演算法虛擬節點 一致性hash演算法

hash 演算法也叫做雜湊演算法,他可以讓任意長度的資料m對映成為長度固定的值h。hash演算法的第乙個作用就是資料的快速儲存與查詢。寫過程式的人都知道,基本上主流的程式語言裡面都有個資料結構叫做map dictionary或者 hash table 它是根據key來直接訪問結果的資料結構。key的...

一致性hash演算法

july部落格16章開始 第一題 全排列,輸入乙個字串,列印出該字串中字元的所有排列 1.個人思路 回溯法建立的排序樹 2.july部落格 遞迴實現,依次固定第乙個字母,後面的交換,和上面描述的使用回溯法相似 c stl 演算法 next permutation的思想,關於next permutat...