Redis叢集的三種方式詳解(附優缺點及原理區別)
Redis提供了三種叢集方式,下面我重點詳解Redis三種叢集方式的原理及優缺點等區別@ mikechen
Redis主從複製模式
1.Redis主從複製定義
主從模式是三種模式中最簡單的,主從模式指的是使用一個Redis例項作為主機,其餘的例項作為備份機,主機和從機的資料完全一致。
如下圖所示:
主機支援資料的寫入和讀取等各項操作,而從機則只支援與主機資料的同步和讀取,也就是說客戶端可以將資料寫入到主機,由主機自動將資料的寫入操作同步到從機。
2.Redis主從複製工作原理
- 當slave啟動後主動向master傳送SYNC命令;
- master接收到SYNC命令後在後臺儲存快照和快取儲存快照這段時間的命令,然後將儲存的快照檔案和快取的命令傳送給slave;
- slave接收到快照檔案和命令後載入快照檔案和快取的執行命令;
- 複製初始化後,master每次接收到的寫命令都會同步傳送給slave,保證主從資料一致性。
3.Redis主從複製優缺點
Redis主從複製優點:做到讀寫分離,提高伺服器效能;
Redis主從複製缺點:在主從模式中,一旦Master節點由於故障不能提供服務,需要人工將Slave節點晉升為Master節點。
Redis哨兵模式
1.為什麼需要哨兵模式?
剛剛上面講到了主從模式當主伺服器當機後,需要手動把一臺從伺服器切換為主伺服器,需要人工干預費事費力,為了解決這個問題出現了哨兵模式。
如下圖所示:
哨兵模式由一個或多個Sentinel例項組成的Sentinel系統,它可以監視所有的Master節點和Slave節點,並在被監視的Master節點進入下線狀態時,自動將下線Master伺服器。
2.哨兵模式工作原理
當主節點出現故障時,由Redis Sentinel自動完成故障發現和轉移,並通知應用方,實現高可用性。
如下圖所示:
- 哨兵機制建立了多個哨兵節點(程式),共同監控資料節點的執行狀況。
- 同時哨兵節點之間也互相通訊,交換對主從節點的監控狀況。
- 每隔1秒每個哨兵會向整個叢集:Master主伺服器+Slave從伺服器+其他Sentinel(哨兵)程式,傳送一次ping命令做一次心跳檢測。
3.哨兵模式的優缺點
哨兵模式優點:最大的優點就是主從可以自動切換,系統更健壯,可用性更高;
哨兵模式缺點:最大的缺點就是還要多維護一套哨兵模式,實現起來也變的更加複雜增加維護成本;
Redis叢集模式
1.為什麼需要Redis叢集模式
哨兵模式基於主從模式,實現讀寫分離,它還可以自動切換,系統可用性更高。但是它每個節點儲存的資料是一樣的,浪費記憶體,因此在Redis3.0後Cluster叢集應運而生。
Redis Cluster是一種伺服器Sharding技術(分片和路由都是在服務端實現),採用多主多從,每一個分割槽都是由一個Redis主機和多個從機組成,片區和片區之間是相互平行的。
2.Redis叢集模式原理
在Redis的每一個節點上,都有這麼兩個東西,一個是插槽(slot),它的的取值範圍是:0-16383,還有一個就是cluster。
如下圖所示:
當我們的存取的時候Redis會根據crc16的演算法得出一個結果,然後把結果對 16384 求餘數,這樣每個 key 都會對應一個編號在 0-16383 之間的雜湊槽。
透過這個值去找到對應的插槽所對應的節點,然後直接自動跳轉到這個對應的節點上進行存取操作。
為了保證高可用,RedisCluster叢集引入了主從模式,一個主節點對應一個或者多個從節點,當主節點當機的時候,就會啟用從節點。
Redis叢集模式應用
主要是針對海量資料+高併發+高可用的海量資料場景,Redis叢集模式的效能和高可用性均優於哨兵模式。
作者簡介
陳睿| ,10年+大廠架構經驗,mikechen的網際網路架構作者,專注於網際網路架構技術。
閱讀mikechen的網際網路架構更多技術文章合集
| | | | | |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70011997/viewspace-2929035/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 深入剖析Redis系列(三) - Redis叢集模式搭建與原理詳解Redis模式
- 6種JavaScript繼承方式及優缺點JavaScript繼承
- Redis持久化的兩種方式的優缺點介紹Redis持久化
- TCP和UDP的優缺點及區別TCPUDP
- Redis三種叢集模式Redis模式
- 單例模式的五種實現方式及優缺點單例模式
- Redis的三種叢集方式+穿透與雪崩的預防和解決Redis穿透
- redis原理及叢集主從配置Redis
- Docker 容器搭建及 Redis 叢集原理DockerRedis
- JS中資料型別檢測四種方式的優缺點JS資料型別
- Redis的應用場景及優缺點Redis
- redis叢集原理Redis
- ajax、axios、fetch之間的詳細區別以及優缺點iOS
- Jedis操作單節點redis,叢集及redisTemplate操作redis叢集(一)Redis
- JavaScript繼承的多種方式和優缺點JavaScript繼承
- Elasticsearch(二)--叢集原理及優化Elasticsearch優化
- Golang切片的三種簡單使用方式及區別Golang
- css實現三欄佈局的幾種方法及優缺點CSS
- Python語言的優缺點詳解!Python
- Nginx/Tomcat/Apache的優缺點和區別NginxTomcatApache
- Ajax、fetch、axios的區別與優缺點iOS
- mixins和元件的區別和優缺點元件
- MySQL 8 大叢集架構的優缺點總結MySql架構
- 【Redis】四種部署模式的介紹及其優缺點Redis模式
- 詳細解讀:不同RAID級別的優缺點對比AI
- Linux的優缺點,Linux與windows的區別LinuxWindows
- JavaScript 各種繼承方式優缺點對比JavaScript繼承
- Redis三種特殊資料型別API詳解附帶詳細使用場景Redis資料型別API
- kafka的原理及叢集部署詳解Kafka
- Java裡連線字串的幾種方式以及優缺點Java字串
- 詳解Redis三大叢集模式,輕鬆實現高可用!Redis模式
- Redis 叢集伸縮原理Redis
- Redis三種高可用模式:主從、哨兵、叢集Redis模式
- redis叢集之主從複製叢集的原理和部署Redis
- 常見的三種代理IP協議的優缺點協議
- Ajax原理以及優缺點
- 三種雲原生儲存方案優缺點及應用場景分析
- Golang make和new的區別及實現原理詳解Golang