Redis從單點(diǎn)到集群部署模式(單機(jī)模式?主從模式?哨兵模式)
導(dǎo)讀
redis 從單點(diǎn) -> 集群總共有三個(gè)部署模式:?jiǎn)螜C(jī)模式,主從模式,哨兵模式,集群模式
單機(jī)模式
新手入門模式。單機(jī)模式意味著 Redis 是單點(diǎn)的,部署在一臺(tái)服務(wù)器,掛了就掛了,用在本地測(cè)試還可以,但是生產(chǎn)環(huán)境就算了。
優(yōu)勢(shì)
- 部署簡(jiǎn)單
- 省錢,一臺(tái)服務(wù)器就可以了
- 不涉及主從復(fù)制等,數(shù)據(jù)強(qiáng)一致
劣勢(shì)
- 單點(diǎn)意味著穩(wěn)定性基本上為 0,掛了就掛了
- 吞吐量受限于單機(jī)資源
主從模式
當(dāng)流量越來越大,單臺(tái)機(jī)器資源不能無限增長(zhǎng),就需要水平擴(kuò)展到多個(gè)節(jié)點(diǎn),使用多個(gè)節(jié)點(diǎn)分散承接讀流量。
主從模式為主節(jié)點(diǎn)承接寫流量,從節(jié)點(diǎn)承接讀流量,二者數(shù)據(jù)一致通過主節(jié)點(diǎn)異步復(fù)制(全量復(fù)制 / 增量復(fù)制)到從節(jié)點(diǎn)。
優(yōu)勢(shì)
- 讀流量被分?jǐn)偟蕉鄠€(gè)節(jié)點(diǎn)上,讀流量支持力度變大
- 當(dāng)主節(jié)點(diǎn)宕機(jī)/不可用時(shí),可以手動(dòng)切換主節(jié)點(diǎn)繼續(xù)提供服務(wù)
劣勢(shì)
- 當(dāng)主節(jié)點(diǎn)宕機(jī)/不可用時(shí)手動(dòng)切換節(jié)點(diǎn),切換過程中 redis (主節(jié)點(diǎn))不可用,并且會(huì)丟失主節(jié)點(diǎn) / 從節(jié)點(diǎn)之間未同步的數(shù)據(jù)
- 穩(wěn)定性還是不夠,依賴手動(dòng)切換。不適用于生產(chǎn)。
- 寫流量還是讓主節(jié)點(diǎn)獨(dú)自承受,寫流量還是靠單機(jī)資源支撐
哨兵模式
哨兵模式主要解決主從模式中手動(dòng)切換的部分,本質(zhì)上哨兵代替了人,通過 gossip 協(xié)議監(jiān)控主節(jié)點(diǎn)的健康情況。
優(yōu)勢(shì)
- 不用手動(dòng)切換主節(jié)點(diǎn)了,切換過程中雖然 redis 也是不可用的,但是這個(gè)時(shí)間會(huì)極大的降低
劣勢(shì)
- sentinel 與主節(jié)點(diǎn)多了一層心跳檢測(cè),有可能 sentinel 與主節(jié)點(diǎn)的網(wǎng)絡(luò)抖動(dòng)導(dǎo)致重新選舉主節(jié)點(diǎn)。
- redis 主從節(jié)點(diǎn)吞吐因心跳檢測(cè)可能稍微降低。
集群模式
集群模式主要解決了兩個(gè)問題:寫流量水平擴(kuò)展 & 哨兵與主節(jié)點(diǎn)的網(wǎng)絡(luò)抖動(dòng)。
集群模式主要的架構(gòu)為:主節(jié)點(diǎn)平分 16384 個(gè)槽,集群支持主節(jié)點(diǎn)的動(dòng)態(tài)上線/下線(需要 rehash),主節(jié)點(diǎn)與從節(jié)點(diǎn)通過心跳關(guān)聯(lián),主節(jié)點(diǎn)失聯(lián)后從節(jié)點(diǎn)有權(quán)發(fā)起選舉成為主節(jié)點(diǎn)(raft 算法)。
優(yōu)勢(shì)
- 自管理集群內(nèi)主從節(jié)點(diǎn)上下線,減少因外部集群網(wǎng)絡(luò)抖動(dòng)之類的發(fā)起的無效選舉
- 數(shù)據(jù)按照 slot 存放在多個(gè)節(jié)點(diǎn),客戶端通過服務(wù)端主節(jié)點(diǎn)的重定向跳轉(zhuǎn)到具體的槽,可動(dòng)態(tài)調(diào)整數(shù)據(jù)分布
- 減少了集群整體不可用的概率,某一主節(jié)點(diǎn)宕機(jī)只影響一部分?jǐn)?shù)據(jù)的訪問
- 寫流量 & 數(shù)據(jù)平分到多個(gè)節(jié)點(diǎn),集群的寫請(qǐng)求瓶頸得到緩解
劣勢(shì)
- 集群間狀態(tài)同步使用 gossip 協(xié)議,節(jié)點(diǎn)數(shù)較多存在較多的心跳網(wǎng)絡(luò)流量
- 主節(jié)點(diǎn)的上線/下線需要進(jìn)行 rehash ,當(dāng)節(jié)點(diǎn)內(nèi)數(shù)據(jù)較多耗時(shí)較長(zhǎng)
redis 節(jié)點(diǎn)間復(fù)制有兩種:全量復(fù)制 & 部分復(fù)制
全量復(fù)制
出現(xiàn)場(chǎng)景
- 從節(jié)點(diǎn)剛上線需要同步主節(jié)點(diǎn)的數(shù)據(jù)
- 從節(jié)點(diǎn)切換腦裂后從節(jié)點(diǎn)偏移量與主節(jié)點(diǎn)不一致的時(shí)間點(diǎn)
- 從節(jié)點(diǎn)偏移量不在主節(jié)點(diǎn)的復(fù)制緩沖區(qū)中
過程
- 從節(jié)點(diǎn)向主節(jié)點(diǎn)發(fā)起同步數(shù)據(jù)的請(qǐng)求
- 主節(jié)點(diǎn)通過 bgsave 形成當(dāng)前數(shù)據(jù)的快照,發(fā)給從節(jié)點(diǎn)
- 從節(jié)點(diǎn)刪除歷史數(shù)據(jù),加載主節(jié)點(diǎn)發(fā)過來 RDB 文件
- 從節(jié)點(diǎn)拉取主節(jié)點(diǎn)緩沖區(qū)數(shù)據(jù),加載到自身的內(nèi)存中,并更新當(dāng)前的偏移量
部分復(fù)制
出現(xiàn)場(chǎng)景
- 全量復(fù)制出現(xiàn)場(chǎng)景之外的場(chǎng)景
- 主從日常復(fù)制
過程
- 主節(jié)點(diǎn)將命令同步到緩沖區(qū)(AOF)
- 從節(jié)點(diǎn)拉取緩沖區(qū)數(shù)據(jù),更新到自身的節(jié)點(diǎn)中,并更新當(dāng)前的偏移量
以上就是Redis從單點(diǎn)集群部署模式(單機(jī)模式 主從模式 哨兵模式)的詳細(xì)內(nèi)容,更多關(guān)于Redis單點(diǎn)集群部署模式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Redis數(shù)據(jù)備份與恢復(fù)方式的五種方式
本文主要介紹了Redis數(shù)據(jù)備份與恢復(fù)方式,包含了五種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07redis中使用bloomfilter的白名單功能解決緩存穿透問題
本文主要介紹了redis中使用bloomfilter的白名單功能解決緩存穿透問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07redis 億級(jí)數(shù)據(jù)讀取的實(shí)現(xiàn)
本文主要介紹了redis 億級(jí)數(shù)據(jù)讀取的實(shí)現(xiàn),億級(jí)數(shù)據(jù)規(guī)模下實(shí)現(xiàn)高效的數(shù)據(jù)讀取成為了許多企業(yè)和開發(fā)者面臨的重大挑戰(zhàn),下面就來介紹一下,感興趣的可以了解一下2024-08-08