1. 程式人生 > >22、資料分佈演算法:hash+一致性hash+redis cluster的hash slot

22、資料分佈演算法:hash+一致性hash+redis cluster的hash slot

1、redis cluster介紹
(1)自動將資料進行分片,每個master上放一部分資料

(2)提供內建的高可用支援,部分master不可用時,還是可以繼續工作的在redis cluster架構下,每個redis要放開兩個埠號,比如一個是6379,另外一個就是加10000的埠號,比如16379 ,16379埠號是用來進行節點間通訊的,也就是cluster bus的東西,叢集匯流排。cluster bus的通訊,用來進行故障檢測,配置更新,故障轉移授權cluster bus用了另外一種二進位制的協議,主要用於節點間進行高效的資料交換,佔用更少的網路頻寬和處理時間;

2、最老土的hash演算法和弊端(大量快取重建);

 

redis cluster hash slot演算法.png

最老土的hash演算法以及弊端.png

3、一致性hash演算法(自動快取遷移)+虛擬節點(自動負載均衡);

一致性hash演算法的講解和優點.png

一致性hash演算法的虛擬節點實現負載均衡.png

4、redis cluster的hash slot演算法redis cluster有固定的16384個hash slot,對每個key計算CRC16值,然後對16384取模,可以獲取key對應的hash slot redis cluster中每個master都會持有部分slot,比如有3個master,那麼可能每個master持有5000多個hash slot hash slot讓node的增加和移除很簡單,增加一個master,就將其他master的hash slot移動部分過去,減少一個master,就將它的hash slot移動到其他master上去移動hash slot的成本是非常低的客戶端的api,可以對指定的資料,讓他們走同一個hash slot,通過hash tag來實現。

文集:https://www.jianshu.com/nb/32293473