redis 主從,sentinel,cluster三者特性
一、redis的主從復制
1.特性:
主從其實就是一般包含一個主,一個或多個從,從節點從主節點復制數據,可以實現讀寫分離,主節點做寫,從節點做讀。
Redis 采用主從(可以多從)部署結構,相較于單副本而言最大的特點就是主從實例間數據實時同步,并且提供數據持久化和備份策略。主從實例部署在不同的物理服務器上,根據公司的基礎環境配置,可以實現同時對外提供服務和讀寫分離策略。
2.主從節點的優缺點:
1)優點:
可以實現讀寫分離,主節點的數據會自動復制到從節點,分擔主節點的壓力
2)缺點:
當主節點宕機了,會導致部分數據未同步。也不具備容錯和回復功能,無論主節點或者從節點宕機都需要等重啟之后才能使用
二、redis哨兵模式
1.特性:
Redis Sentinel 是 2.8 版本后推出的原生高可用解決方案,其部署架構主要包括兩部分:Redis Sentinel 集群和 Redis 數據集群。其實哨兵模式也是一種主從,只不過增加了哨兵的功能,用于監控主節點的狀態,當主節點宕機之后會進行投票重新選出主節點。可以實現故障發現、故障自動轉移、配置中心和客戶端通知,但是sentinel必須為奇數(除了1),用來防止出現腦裂。
哨兵的宕機分為兩種:主觀宕機(我認為你掉線了)和客觀宕機(我們認為你掉線了),當客觀宕機了之后就會再選舉一個從節點作為主節點。
2.redis哨兵模式的優缺點:
1)優點:
解決主從模式下的高可用
可以實現一套 Sentinel 監控一組 Redis 數據節點或多組數據節點
滿足 Redis 大容量或高性能的業務需求
2)缺點:
資源浪費,Redis 數據節點中 slave 節點作為備份節點不提供服務
不能解決讀寫分離問題,實現起來相對復雜
部署相對于主從復雜
三、redis cluster集群模式
1.特性:
Redis Cluster 是 3.0 版后推出的 Redis 分布式集群解決方案,主要解決 Redis 分布式方面的需求。當遇到單機內存,并發和流量等瓶頸的時候,Redis Cluster 能起到很好的負載均衡的目的。Redis Cluster 集群節點最小配置 6 個節點以上(3 主 3 從),其中主節點提供讀寫操作,從節點作為備用節點,不提供請求,只作為故障轉移使用。Redis Cluster 采用虛擬槽分區,所有的鍵根據哈希函數映射到 0~16383 個整數槽內,每個節點負責維護一部分槽以及槽所印映射的鍵值數據。
2.redis cluster的優缺點:
1)優點:
所有Redis節點使用(PING機制)互聯
集群中某個節點的是否失效,是由整個集群中超過半數的節點監測都失效,才能算真正的失效
客戶端不需要proxy即可直接連接redis,應用程序中需要配置有全部的redis服務器IP
redis cluster把所有的redis node 平均映射到 0-16383個槽位(slot)上,讀寫需要到指定的redis node上進行操作,因此有多少個redis node相當于redis 并發擴展了多少倍,每個redis node 承擔16384/N個槽位
Redis cluster預先分配16384個(slot)槽位,當需要在redis集群中寫入一個key -value的時候,會使 用CRC16(key) mod 16384之后的值,決定將key寫入值哪一個槽位從而決定寫入哪一個Redis節點 上,從而有效解決單機瓶頸
2)缺點:
大多數時客戶端性能會”降低”
命令無法跨節點使用:mget、keys、scan、flush、sinter等
客戶端維護更復雜:SDK和應用本身消耗(例如更多的連接池)
不支持多個數據庫︰集群模式下只有一個db 0
復制只支持一層∶不支持樹形復制結構,不支持級聯復制
Key事務和Lua支持有限∶操作的key必須在一個節點,Lua和事務無法跨節點使用
寫于2022/6/12 20:27 weilan
浙公網安備 33010602011771號