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