聊聊Redis集群有哪些種類?
主從模式
主從架構(gòu)圖
主從模式就是一個redis實例作為主節(jié)點(diǎn),其他redis實例作為從節(jié)點(diǎn),從節(jié)點(diǎn)會將主節(jié)點(diǎn)的數(shù)據(jù)同步過來。利用這個模式可以做讀寫分離,主節(jié)點(diǎn)可讀可寫,從節(jié)點(diǎn)只讀,降低單節(jié)點(diǎn)情況的壓力。
優(yōu)點(diǎn)
- 主從同步可以實現(xiàn)備份數(shù)據(jù)的作用,降低數(shù)據(jù)丟失的風(fēng)險
- 讀寫分離,提高查詢效率
- 某個節(jié)點(diǎn)掛掉時,其他節(jié)點(diǎn)依然可以對外提供服務(wù)
缺點(diǎn)
- 每個節(jié)點(diǎn)都是全量數(shù)據(jù),內(nèi)存利用率低,浪費(fèi)資源
- 主節(jié)點(diǎn)掛掉時,有可能導(dǎo)致主從數(shù)據(jù)不一致
- 主節(jié)點(diǎn)掛掉后,雖然從節(jié)點(diǎn)可繼續(xù)查詢,但是主節(jié)點(diǎn)不能提供寫入服務(wù)
- 主節(jié)點(diǎn)掛掉后需要人工介入
- 寫入壓力在一個節(jié)點(diǎn)
哨兵模式
哨兵模式架構(gòu)圖
哨兵模式是在主從模式的基礎(chǔ)上,增加了由一個或多個哨兵組成的哨兵集群來監(jiān)視主從模式的運(yùn)行狀態(tài),解決主節(jié)點(diǎn)掛掉時無法繼續(xù)對外提供寫入服務(wù)的問題。一般會用奇數(shù)個哨兵節(jié)點(diǎn),因為每個哨兵都會監(jiān)視集群中節(jié)點(diǎn)的狀態(tài),如果主節(jié)點(diǎn)掛掉了,哨兵會進(jìn)行投票,將某個從節(jié)點(diǎn)提升為主節(jié)點(diǎn)接續(xù)對外提供服務(wù),從而達(dá)到高可用。客戶端連接哨兵,哨兵對外提供redis服務(wù)地址的發(fā)現(xiàn)。
優(yōu)點(diǎn)
- 實現(xiàn)了高可用,部分節(jié)點(diǎn)掛掉依然能對外提供全部服務(wù)
- 出現(xiàn)問題,自動切換,無需人工介入
缺點(diǎn)
- 依然存在內(nèi)存利用率不高,每個節(jié)點(diǎn)都是全量數(shù)據(jù)的問題
- 部署相對復(fù)雜,節(jié)點(diǎn)較多,不確定性增加
- 寫入壓力依然集中在一個節(jié)點(diǎn)
分片集群
分片集群架構(gòu)圖
有多個主從模式組成集群,當(dāng)主節(jié)點(diǎn)掛掉是,從節(jié)點(diǎn)會提升為主節(jié)點(diǎn),且數(shù)據(jù)是分片保存在不同的主從集群里,分片的規(guī)則是整個數(shù)據(jù)庫將會被分為16384個哈希槽,數(shù)據(jù)庫中的每個鍵都屬于這16384個槽中的其中一個,集群中的每個節(jié)點(diǎn)可以處0個或者最多16384個槽。
優(yōu)點(diǎn)
- 寫入操作會被分配到不同的節(jié)點(diǎn),提高了寫入效率
- 數(shù)據(jù)是分片保存到了不同的主從節(jié)點(diǎn),內(nèi)存利用率較高,擴(kuò)展性好
- 高可用,除非其中一個主從集群的節(jié)點(diǎn)都掛掉,否則任何一個節(jié)點(diǎn)掛掉都能繼續(xù)對外提供服務(wù)
缺點(diǎn)
暫時沒想到