redis三種模式對比


本文鏈接:https://blog.csdn.net/selectgoodboy/article/details/86377861

模式類型
主從模式(redis2.8版本之前的模式)、哨兵sentinel模式(redis2.8及之后的模式)、redis cluster模式(redis3.0版本之后)

主從模式原理
同Mysql主從復制的原因一樣,Redis雖然讀取寫入的速度都特別快,但是也會產生讀壓力特別大的情況。為了分擔讀壓力,Redis支持主從復制,Redis的主從結構可以采用一主多從或者級聯結構,Redis主從復制可以根據是否是全量分為全量同步和增量同步。下圖為級聯結構。

 

優點:

1、解決數據備份問題

2、做到讀寫分離,提高服務器性能

缺點:

1、每個客戶端連接redis實例的時候都是指定了ip和端口號的,如果所連接的redis實例因為故障下線了,而主從模式也沒有提供一定的手段通知客戶端另外可連接的客戶端地址,因而需要手動更改客戶端配置重新連接

2、主從模式下,如果主節點由於故障下線了,那么從節點因為沒有主節點而同步中斷,因而需要人工進行故障轉移工作

3、無法實現動態擴容

 

sentinel模式
Sentinel(哨兵)是Redis的高可用性解決方案:由一個或多個Sentinel實例組成的Sentinel系統可以監視任意多個主服務器,以及這些主服務器屬下的所有從服務器,並在被監視的主服務器進入下線狀態時,自動將下線主服務器屬下的某個從服務器升級為新的主服務器。

例如:

 

 

 

優點

1、Master 狀態監測

2、如果Master 異常,則會進行Master-slave 轉換,將其中一個Slave作為Master,將之前的Master作為Slave 

3、Master-Slave切換后,master_redis.conf、slave_redis.conf和sentinel.conf的內容都會發生改變,即master_redis.conf中會多一行slaveof的配置,sentinel.conf的監控目標會隨之調換

缺點:

1、如果是從節點下線了,sentinel是不會對其進行故障轉移的,連接從節點的客戶端也無法獲取到新的可用從節點

2、無法實現動態擴容

 

cluster模式
在這個圖中,每一個藍色的圈都代表着一個redis的服務器節點。它們任何兩個節點之間都是相互連通的。客戶端可以與任何一個節點相連接,然后就可以訪問集群中的任何一個節點。對其進行存取和其他操作。

一般集群建議搭建三主三從架構,三主提供服務,三從提供備份功能。

 

每一個節點都存有這個集群所有主節點以及從節點的信息。

    它們之間通過互相的ping-pong判斷是否節點可以連接上。如果有一半以上的節點去ping一個節點的時候沒有回應,集群就認為這個節點宕機了,然后去連接它的備用節點。如果某個節點和所有從節點全部掛掉,我們集群就進入faill狀態。還有就是如果有一半以上的主節點宕機,那么我們集群同樣進入發力了狀態。這就是我們的redis的投票機制,具體原理如下圖所示:

(1)投票過程是集群中所有master參與,如果半數以上master節點與master節點通信超時(cluster-node-timeout),認為當前master節點掛掉.

    (2):什么時候整個集群不可用(cluster_state:fail)? 

        a:如果集群任意master掛掉,且當前master沒有slave.集群進入fail狀態,也可以理解成集群的slot映射[0-16383]不完整時進入fail狀態. ps : redis-3.0.0.rc1加入cluster-require-full-coverage參數,默認關閉,打開集群兼容部分失敗.

        b:如果集群超過半數以上master掛掉,無論是否有slave,集群進入fail狀態.

 

原理:

 

 

 

優點:

1、有效的解決了redis在分布式方面的需求

2、遇到單機內存,並發和流量瓶頸等問題時,可采用Cluster方案達到負載均衡的目的

3、可實現動態擴容

4、P2P模式,無中心化

5、通過Gossip協議同步節點信息

6、自動故障轉移、Slot遷移中數據可用

缺點:

1、架構比較新,最佳實踐較少

2、為了性能提升,客戶端需要緩存路由表信息

3、節點發現、reshard操作不夠自動化

 

參考:主從復制原理https://www.cnblogs.com/kevingrace/p/5685332.html

redis單例、主從模式、sentinel以及集群的配置方式及優缺點對比

https://blog.csdn.net/keketrtr/article/details/78802571

Redis進階實踐之十一 Redis的Cluster集群搭建

https://www.cnblogs.com/PatrickLiu/p/8458788.html

Redis進階實踐之十二 Redis的Cluster集群動態擴容

https://www.cnblogs.com/PatrickLiu/p/8473135.html


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM