一致性hash

普通hash算法

採用簡單取模的方式,將機器進行散列,這在cache環境不變的狀況下能取得讓人滿意的結果,可是當cache環境動態變化時,命中率將不盡人意,好比添加或者刪除幾臺機器。html

一致hash算法

  1. 構建Hash空間    按照經常使用hash算法來將對應的key哈希到一個具備2^32次方個桶的空間中,即0~(2^32)-1的數字空間中。而後將這些數字頭尾相連造成一個閉合的環形。算法

  2. 將機器經過hash算法映射到環上    經過使用與對象存儲同樣的Hash算法將機器也映射到環中,而後以順時針的方向計算,將全部對象存儲到離本身最近的機器中。spa

  3. 增長虛節點    一致性哈希算法在服務節點太少時,容易由於節點分部不均勻而形成數據傾斜問題。.net

  4. 映射虛節點到實際節點htm

代碼實現一致性hash算法

參考http://blog.codinglabs.org/articles/consistent-hashing.htmlhttp://blog.csdn.net/cywosp/article/details/23397179對象

相關文章
相關標籤/搜索