更新時間:2023-05-30 來源:黑馬程序員 瀏覽量:
分片集群主要解決的是,海量數(shù)據(jù)存儲的問題,集群中有多個master,每個master保存不同數(shù)據(jù),并且還可以給每個master設(shè)置多個slave節(jié)點(diǎn),就可以繼續(xù)增大集群的高并發(fā)能力。同時每個master之間通過ping監(jiān)測彼此健康狀態(tài),就類似于哨兵模式了。當(dāng)客戶端請求可以訪問集群任意節(jié)點(diǎn),最終都會被轉(zhuǎn)發(fā)到正確節(jié)點(diǎn)。
主從和哨兵可以解決高可用、高并發(fā)讀的問題。但是依然有兩個問題沒有解決,海量數(shù)據(jù)存儲問題和高并發(fā)寫的問題。
使用分片集群可以解決上述問題,分片集群特征:
?集群中有多個master,每個master保存不同數(shù)據(jù)
?每個master都可以有多個slave節(jié)點(diǎn)
?master之間通過ping監(jiān)測彼此健康狀態(tài)
?客戶端請求可以訪問集群任意節(jié)點(diǎn),最終都會被轉(zhuǎn)發(fā)到正確節(jié)點(diǎn)
Redis集群引入了哈希槽的概念,有16384個哈希槽。集群中每個主節(jié)點(diǎn)綁定了一定范圍的哈希槽范圍,key通過CRC16校驗(yàn)后對16384取模來決定放置哪個槽,通過槽找到對應(yīng)的節(jié)點(diǎn)進(jìn)行存儲。