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