分佈式緩存原理——一致性hash算法(hash環)、Hash槽

一、一致性哈希算法:一種特殊的哈希算法,目前主要應用於分佈式緩存當中,可以有效地解決分佈式存儲結構下動態增加和刪除節點所帶來的問題。

  1. 一致性Hash算法是對2^32取模,2^32個點組成的圓環稱爲Hash環。根據服務節點的IP或者機器名稱進行哈希,就能確定每臺機器就能確定其在哈希環上的位置;
  2. 將數據key使用相同的函數Hash計算出哈希值,並確定此數據在環上的位置,從此位置沿環順時針“行走”,第一臺遇到的服務器就是其應該定位到的服務器。
  3. 添加、刪除節點的時候,隻影響相鄰一個節點的數據,其他節點的數據不影響。具有較好的擴展性和容錯性。
  4. 爲了防止數據分佈不均勻,可以應用虛擬節點來映射物理節點。

 

二、hash槽:Redis準備了16384個hash槽,類似於Memcached Hash環上的一個個位置。 這16384個hash槽被分配給不同節點,存放數據時,根據數據的key計算出所在的槽,再根據槽找到對應的機器。hash函數爲:CRC16(key) % 16384。

三、比較:

 

參考文檔:

https://redis.io/topics/cluster-tutorial

https://blog.csdn.net/clz1314521/article/details/80604555

https://blog.csdn.net/truelove12358/article/details/79612954

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章