Redis多機常用架構-主從


本文內容摘錄自同事Perry Zhang的講解,如需轉載須本人同意。

1.主從

命令:slaveof <IP><PORT>

redis主從配置:redis支持master-slave的主從配置,配置方法是在從機的配置文件中指定slaveof參數為主機的ip和port即可

將一台服務器(Slave)變成為另外一個服務器(Master)的復制品

image

復制過程:

1. Slave向Master發送 Sync命令

2. 接到 Sync命令的Master會調用BGSAVE ,創建一個 RDB 文件,並使用Backlog記錄接下來執行的所有寫命令

3. 當Master執行完 BGSAVE 命令時,它會向Slave發送 RDB 文件,而Slave則會接收並載入這個文件

4. Master將Backlog儲存的所有寫命令發送給Slave執行

image

image

Sync 命令同步后,主從會達到暫時的數據一致性。

數據不一致:Master執行了新的寫命令,則主從數據又將不一致

image

5. 在主從完成同步之后,Master每執行一個寫命令,它都會將被執行的寫命令發送給Slave執行,這個操作被稱為 “Command Propagate”

Command Propagate是持續的過程:只要復制仍在繼續,命令傳播就會一直進行,使得主從的狀態可以一直保持一致

image

之后每當有什么新的寫命令被執行了,比如 SET k7 v7、SET k8 v8 等等,Master也會繼續將命令傳播給Slave執行。

2.8之后,Redis使用PSync命令代替Sync

PSync最大特性:部分重同步(Partial Resync)

為什么采用部分重同步技術?

在主從斷線並且重新連接的時候,只要條件允許,PSYNC 可以讓Master只向Slave同步斷線期間缺失的數據,而不用重新向Slave同步整個庫

Sync斷線重連過程

image

PSync斷線重連過程

image

復制的數據一致性問題

理論上會出現復制不一致的情況:在Master執行完寫命令直到Slave執行完寫命令的這段時間里,如下例

Redis 目前的復制實現只保證最終一致性,而不是強一致性

image


免責聲明!

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



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