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