網際網路”三高”架構
- 高併發
- 高效能
- 高可用
你的”Redis”是否高可用
單機redis的風險與問題
問題1.機器故障
- 現象:硬碟故障、系統奔潰
- 本質:資料丟失,很可能對業務造成災難性打擊
- 結論:基本上會放棄使用redis
問題2.容量瓶頸
- 現象:記憶體不足,從16G升級到64G,從64G升級到128G,無限升級記憶體
- 本質:窮,硬體條件跟不上
- 結論:放棄使用redis
結論
為了避免單點Redis伺服器故障,準備多臺伺服器,互相連通。將資料複製多個副本儲存在不同的伺服器上,連線在一起,並保證資料是同步的。即使有其中一臺伺服器當機,其他伺服器依然可以繼續提供服務,實現Redis的高可用,同時實現資料冗餘備份。
多臺伺服器連線方案
提供資料方:master
主伺服器,主節點,主庫
主客戶端接收資料方:slave
從伺服器,從節點,從庫
從客戶端需要解決的問題:
資料同步核心工作:
master的資料複製到slave中
主從複製
主從複製即將master中的資料即時、有效的複製到slave中
特徵:一個master可用擁有多個slave,一個slave只對應一個master
職責:
master:
- 寫資料
- 只想寫操作時,將出現變化的資料自動同步到slave
- 讀資料(可忽略)
slave:
- 讀資料
- 寫資料(禁止)
高可用叢集
主從複製的作用
- 讀寫分離:master寫,slave讀,提高伺服器的讀寫負載能力
- 負載均衡:基於主從結構,配合讀寫分離,由slave分擔master負載,並根據需求的變化,改變slave的數量,透過多個從節點分擔資料讀取負載,大大提高Redis伺服器併發量與資料吞吐量
- 故障恢復:當master出現問題時,由slave提供服務,實現快速的故障恢復
- 資料冗餘:實現資料備份,是持久化外的一個資料冗餘方式
- 高可用基石:基於主從複製,構建哨兵模式與叢集,實現Redis的高可用方案
主從複製工作流程
總述
- 主從複製過程大體可以分為3個階段
- 建立連線階段(即準備階段)
- 資料同步階段
- 命令傳播階段
階段一:建立連線階段
- 建立slave到master的連線,使master能夠識別到slave,並儲存slave埠號
建立連線階段工作流程
步驟1:設定master的地址和埠,儲存master資訊
步驟2:建立socket連線
步驟3:傳送ping命令(定時器任務)
步驟4:身份驗證
步驟5:傳送slave埠資訊
至此,主從連線成功
狀態:
slave:儲存master的地址與埠
master:儲存slave的埠
總體:之間建立了連線的socket
本作品採用《CC 協議》,轉載必須註明作者和本文連結