redis主從模式

redis主從模式


主從模式

在軟件架構中,master-slave(主從模式)是使用比較多的一種架構方式;

  • 概述

    主(master)和 從(slave)部署在不同的服務器上,當主節點服務器寫入數據時會同步到從節點的服務器上,一般主節點負責寫入數據,從節點負責讀取數據

  • 優點

    • 讀寫分離,提高效率
    • 數據熱備份,提供多個副本
  • 缺點

    • 主節點故障,集羣則無法進行工作,可用性比較低,從節點升主節點需要人工手動干預
    • 單點容易造成性能低下
  • 主節點的存儲能力受到限制

    • 主節點的寫受到限制(只有一個主節點)
    • 全量同步可能會造成毫秒或者秒級的卡頓現象
  • 架構圖

在這裏插入圖片描述

  • 特點

    只能master到slave,單向的;

  • 全量複製

    一般情況下,當slave第一次啓動連接master,或者是“被認爲是第一次連接”,則主從採用全量複製的方式進行數據同步。

    全量複製的執行流程:

    • 定時任務每秒檢查是否有新的mater需要連接,如果發現就與master建立socket連接。

    • slave 發送ping指令到mater

    • 如果mater配置require pass,slave需要發送認證給master

    • slave 會發送sync命令命令給 master 請求同步數據;

    • master 接收到同步請求後向 slave 發送 run_id 和 offset;

    • slave 會接收並保存 mater 傳遞過來信息(slave 中無對應offset,所以執行全量複製)。

    • master 執行 bgsave 命令生成RDB文件,期間會創建複製緩衝區記錄從現在開始執行的所有寫命令;

    • master 先向 slave 發送RDB數據;

    • 然後發送複製緩衝區記錄的數據,slave 會將RDB和緩衝區數據存放到磁盤中;

    • slave 在清空原有數據;

    • 最後再將磁盤中接收到的數據導入內存中。

    • Master收集到的寫命令都會通過之前建立的連接,增量發送給salve端

  • 名詞解釋

    • offset複製偏移量

      offset是用來記錄master和lslave某個時段的數據版本狀態的,slave每秒會向master上報offset,master保存下來,當觸發PSYNC時再拿來和master的offset數據作對比。它是記錄數據在某一時刻的快照,用來對比master和slave數據差異用的,從而決定是否是全量複製。

    • backlog積壓緩衝區

      它默認大小爲1mb,複製積壓緩衝區是由Master維護的一個固定長度的FIFO隊列,它的作用是緩存已經傳播出去的命令。當Master進行命令傳播時,不僅將命令發送給所有Slave,還會將命令寫入到複製積壓緩衝區裏面。

      全量複製的時候,master的數據更新(讀寫操作,主動過期刪除等)會臨時存放在backlog中待全量複製完成後增量發到slave,必須爲此保留足夠的空間。

    • run_id

      master唯一標示,slave連接master時會傳runid,master每次重啓runid都發生變化,當slave發現master的runid變化時都會觸發全量複製流程。

  • 環境搭建

    環境搭建就不一一贅述了,隨便搜一下都有的,跟着操作一下就好了,都只是配置而已


想了解學習更多C++後臺服務器方面的知識,請關注:
微信公衆號:C++後臺服務器開發


**

想了解學習更多C++後臺服務器方面的知識,請關注:
微信公衆號:C++後臺服務器開發


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章