hash一致性演算法hash函式的一種,他的目的在於實現負載均衡,並且每次訪問的目標具有一致性,舉個例子來說,根據客戶端請求ip,經過hash一致性演算法,每次計算出來的一致性hash值都是相同的因此每次
請求的目標主機將是一致的,這種演算法廣泛使用在負載均衡,資料庫水平分表,他的本質在於通過演算法的方式計算出key的一致性和唯一性,均衡性
而一致性hash演算法的核心在於增加了虛擬節點來盡可能的達到key值投射到目的主機盡量均衡
1public
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 }
1static
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...