把伺服器的ip或者主機名作為key對2^32求餘,餘數一定是2^32-1,然後放到(平行對映)0~2^32次方首尾相連的環上。
理想狀態下伺服器會均勻分布在這個環上,當資料儲存時,依然把key對2^32進行求餘,然後分布在hash環上,並且按順時針就近儲存。
如果 某乙個節點失效,那麼僅僅會影響 該節點的資料,對其他節點無影響!
上圖僅僅是理想狀態下,因為伺服器ip或者主機名取模後,有可能造成偏斜,既:節點沒有均勻分布在hash環上,而是擠在了一起。
這樣的情況下node1 承載的資料量是最大的!這種情況下產生了一種虛擬伺服器的概念。例如我們有三颱快取伺服器,單台伺服器經過某種演算法取模,會得到n個虛擬點,這些虛擬點均勻的分布在hash環上,就解決了hash環偏斜的問題。
posted @
2017-03-14 21:45
dahlhin 閱讀(
...)
編輯收藏
一致性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...