一致性hash演算法

2022-01-17 02:31:23 字數 2169 閱讀 2541

hash一致性演算法hash函式的一種,他的目的在於實現負載均衡,並且每次訪問的目標具有一致性,舉個例子來說,根據客戶端請求ip,經過hash一致性演算法,每次計算出來的一致性hash值都是相同的因此每次

請求的目標主機將是一致的,這種演算法廣泛使用在負載均衡,資料庫水平分表,他的本質在於通過演算法的方式計算出key的一致性和唯一性,均衡性

而一致性hash演算法的核心在於增加了虛擬節點來盡可能的達到key值投射到目的主機盡量均衡

1

public

class

consistencyhash2\t

", cpm,hashval));40}

41}42}

4344/**

45* 計算md5值

46*/

4748

public

byte

computemd5(string k)

4959

60/**61

* 根據2^32把節點分布到環上面62*

63* @param digest

64* @param ntime

65* @return

66*/

6768

public

long hash(byte digest, int

ntime)

6977

7879/**

80* 根據key的hash值取得伺服器節點資訊81*

82* @param hash

83* @return

84*/

8586

public object getnodeinfo(long

hash)87;

98if (tailmap == null || tailmap.count() == 0

)99 key =allnodes.firstordefault().key;

100else

101 key =tailmap.firstordefault().key;

102}

103return

allnodes[key];

104}

105106 }

1

static

void main(string

args)228

else

if (consistencyhash.getnodeinfo(key).equals("

192.168.0.1-伺服器1"))

2932

else

if (consistencyhash.getnodeinfo(key).equals("

192.168.0.2-伺服器2"))

3336

else

if (consistencyhash.getnodeinfo(key).equals("

192.168.0.3-伺服器3"))

3740

else

if (consistencyhash.getnodeinfo(key).equals("

192.168.0.4-伺服器4"))

4144

else

4548}49

50//

輸出每台伺服器負載情況

一致性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...