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

