Redis Cluster 原理你了解不?
1. redis cluster 介紹
1.1 自動將數(shù)據(jù)進(jìn)行分片,每個master上放一部分?jǐn)?shù)據(jù)
1.2 提供內(nèi)置的高可用支持,部分master不可用時,這是可以繼續(xù)工作的
在redis cluster 架構(gòu)下,每個redis 要開放兩個端口,比如一個是6379,一個是加10000的端口號,比如16379
16379端口號是用來進(jìn)行節(jié)點通信的,也就是cluster bus 的東西,集群總線,cluster bus的通信,用來進(jìn)行故障檢測,配置更新,故障轉(zhuǎn)移授權(quán)
cluster bus用了另外一種二進(jìn)制協(xié)議,主要用于節(jié)點間進(jìn)行高效的數(shù)據(jù)交換,占用更少的網(wǎng)絡(luò)帶寬和處理時間
2. 最老土的hash 算法和弊端(大量緩存重建)
3. 一致性hash算法(自動緩存遷移)+ 虛擬節(jié)點(自動負(fù)載均衡)
4. redis cluster 的 hash slot 算法
redis cluster 有固定的16384 個hash slot ,對每個key 計算CRC16信息,然后對16384取模,可以獲取key對應(yīng)的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,可以對指定的數(shù)據(jù),讓他們走向同一個hash slot , 通過hash ?tag 來實現(xiàn)。
往期推薦
掃一掃,關(guān)注我
一起學(xué)習(xí),一起進(jìn)步
評論
圖片
表情
