Redis Cluster 原理你了解不?
1. redis cluster 介紹
1.1 自動(dòng)將數(shù)據(jù)進(jìn)行分片,每個(gè)master上放一部分?jǐn)?shù)據(jù)
1.2 提供內(nèi)置的高可用支持,部分master不可用時(shí),這是可以繼續(xù)工作的
在redis cluster 架構(gòu)下,每個(gè)redis 要開(kāi)放兩個(gè)端口,比如一個(gè)是6379,一個(gè)是加10000的端口號(hào),比如16379
16379端口號(hào)是用來(lái)進(jìn)行節(jié)點(diǎn)通信的,也就是cluster bus 的東西,集群總線,cluster bus的通信,用來(lái)進(jìn)行故障檢測(cè),配置更新,故障轉(zhuǎn)移授權(quán)
cluster bus用了另外一種二進(jìn)制協(xié)議,主要用于節(jié)點(diǎn)間進(jìn)行高效的數(shù)據(jù)交換,占用更少的網(wǎng)絡(luò)帶寬和處理時(shí)間
2. 最老土的hash 算法和弊端(大量緩存重建)
3. 一致性hash算法(自動(dòng)緩存遷移)+ 虛擬節(jié)點(diǎn)(自動(dòng)負(fù)載均衡)
4. redis cluster 的 hash slot 算法
redis cluster 有固定的16384 個(gè)hash slot ,對(duì)每個(gè)key 計(jì)算CRC16信息,然后對(duì)16384取模,可以獲取key對(duì)應(yīng)的hash slot
redis cluster中每個(gè)master都會(huì)有部分slot,比如3個(gè)master,那么可能每個(gè)master 持有5000多個(gè)hash slot
hash slot讓node 的增加和移除很簡(jiǎn)單,增加一個(gè)master,就將其他的master 的hash slot 移動(dòng)部分過(guò)去,減少一個(gè)master,就將它的hash slot 移動(dòng)到其他的master 上去
移動(dòng)hash slot 的成本是非常低的
客戶端的api,可以對(duì)指定的數(shù)據(jù),讓他們走向同一個(gè)hash slot , 通過(guò)hash ?tag 來(lái)實(shí)現(xiàn)。
贈(zèng)書(shū):聊聊「分布式架構(gòu)」那些事兒
往期推薦
掃一掃,關(guān)注我
一起學(xué)習(xí),一起進(jìn)步
