redis cluster集羣架構詳解(十七)- redis cluster數據分佈算法比較-hash算法、一致性hash算法、hash slot算法

5.9. 數據分佈算法

分佈式數據存儲的核心算法,數據分佈的算法主要有三種算法:hash算法、一致性hash算法、hash slot算法。
hash算法 -> 一致性hash算法(memcached使用) -> hash slot算法(redis cluster 使用)

​ redis cluster 用不同的算法,就決定了數據如何分佈到這些節點上去。

5.9.1. hash算法和弊端:大量緩存重建

客戶端訪問key,通過使用key的hash值對redis 節點數取摸,找到對應的節點去獲取Key的數據。

其弊端在於,某個master宕機,所有落在此master的請求就會嘗試去其他master獲取,其他master沒有數據,就會去數據庫獲取數據並進行緩存重建。一旦請求量過大,讀取數據庫並創建緩存就會出現承載壓力過大而導致系統崩潰。

在這裏插入圖片描述

5.9.2. 一致性hash算法:緩存熱點數據容易導致性能瓶頸

先構造一個0到2^32的整數環,然後將服務器節點的Hash值,放在該環上(可以理解爲將你的ip做hash,將ip的HashCode放在環上)。然後根據需要緩存的數據的Key,計算Key的HashCode,然後在環上,順時針查找距離這個Key的Hash值最近的緩存服務器的節點,然後將Value,存儲到該服務器節點上。

在這裏插入圖片描述

緩存熱點問題,當某個熱點數據在某個hash區間內特別多,就會出現大量的請求落在某個master節點上,出現性能瓶頸。

5.9.3.redis cluster的hash slot算法

在這裏插入圖片描述

1、redis cluster有固定的16384個hash slot,對每個key計算CRC16值,然後對16384取模,可以獲取key對應的hash slot。

2、redis cluster中每個master都會持有部分slot,比如有4個master,那麼可能每個master持有4000多個hash slot。

3、hash slot讓node的增加和移除很簡單,增加一個master,就將其他master的hash slot移動部分過去,減少一個master,就將它的hash slot移動到其他master上去。

4、客戶端的api,可以對指定的數據,使用hash tag 來實現走同一個hash slot。

5、移動hash slot的成本是非常低的。

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