redis-23.主從複製-概念

aliyeye發表於2021-03-05

網際網路”三高”架構

  • 高併發
  • 高效能
  • 高可用

你的”Redis”是否高可用

單機redis的風險與問題

  • 問題1.機器故障

    • 現象:硬碟故障、系統奔潰
    • 本質:資料丟失,很可能對業務造成災難性打擊
    • 結論:基本上會放棄使用redis
  • 問題2.容量瓶頸

    • 現象:記憶體不足,從16G升級到64G,從64G升級到128G,無限升級記憶體
    • 本質:窮,硬體條件跟不上
    • 結論:放棄使用redis
  • 結論
    為了避免單點Redis伺服器故障,準備多臺伺服器,互相連通。將資料複製多個副本儲存在不同的伺服器上,連線在一起,並保證資料是同步的。即使有其中一臺伺服器當機,其他伺服器依然可以繼續提供服務,實現Redis的高可用,同時實現資料冗餘備份

多臺伺服器連線方案

  • 提供資料方:master
    主伺服器,主節點,主庫
    主客戶端

  • 接收資料方:slave
    從伺服器,從節點,從庫
    從客戶端

  • 需要解決的問題:
    資料同步

  • 核心工作:
    master的資料複製到slave中

AIifrqIOYV.png!large

主從複製

主從複製即將master中的資料即時、有效的複製到slave中

特徵:一個master可用擁有多個slave,一個slave只對應一個master

職責:

  • master:

    • 寫資料
    • 只想寫操作時,將出現變化的資料自動同步到slave
    • 讀資料(可忽略)
  • slave:

    • 讀資料
    • 寫資料(禁止)

高可用叢集

cZ5WAA3wHy.png!large

主從複製的作用

  • 讀寫分離:master寫,slave讀,提高伺服器的讀寫負載能力
  • 負載均衡:基於主從結構,配合讀寫分離,由slave分擔master負載,並根據需求的變化,改變slave的數量,透過多個從節點分擔資料讀取負載,大大提高Redis伺服器併發量與資料吞吐量
  • 故障恢復:當master出現問題時,由slave提供服務,實現快速的故障恢復
  • 資料冗餘:實現資料備份,是持久化外的一個資料冗餘方式
  • 高可用基石:基於主從複製,構建哨兵模式與叢集,實現Redis的高可用方案

主從複製工作流程

總述

  • 主從複製過程大體可以分為3個階段
    • 建立連線階段(即準備階段)
    • 資料同步階段
    • 命令傳播階段

P9xhYZSkPx.png!large

階段一:建立連線階段

  • 建立slave到master的連線,使master能夠識別到slave,並儲存slave埠號

建立連線階段工作流程

步驟1:設定master的地址和埠,儲存master資訊
步驟2:建立socket連線
步驟3:傳送ping命令(定時器任務)
步驟4:身份驗證
步驟5:傳送slave埠資訊
至此,主從連線成功

狀態:
slave:儲存master的地址與埠
master:儲存slave的埠
總體:之間建立了連線的socket

fDnQvemmlF.png!large

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章