redis設計與實現讀書筆記-主從複製

主從複製:

在Redis中,用戶可以通過執行SLAVEOF命令或者設置slaveof選項,讓一個服務器去複製(replicate)另一個服務器,我們稱呼被複制的服務器爲主服務器(master),而對主服務器進行復制的服務器則被稱爲從服務器(slave)。

如果從服務器創建的套接字能成功連接(connect)到主服務器,那麼從服務器將爲這個套接字關聯一個專門用於處理複製工作的文件事件處理器,這個處理器將負責執行後續的複製工作,比如接收RDB文件,以及接收主服務器傳播來的寫命令,諸如此類。

PSYNC命令具有完整重同步(full resynchronization)和部分重同步(partialresynchronization)兩種模式:

❑其中完整重同步用於處理初次複製情況:完整重同步的執行步驟和SYNC命令的執行步驟基本一樣,它們都是通過讓主服務器創建併發送RDB文件,以及向從服務器發送保存在緩衝區裏面的寫命令來進行同步。

❑而部分重同步則用於處理斷線後重複製情況:當從服務器在斷線後重新連接主服務器時,如果條件允許,主服務器可以將主從服務器連接斷開期間執行的寫命令發送給從服務器,從服務器只要接收並執行這些寫命令,就可以將數據庫更新至主服務器當前所處的狀態。

複製的實現

設置主服務器的地址和端口-》建立套接字連接-》發送PING命令-》身份驗證-》發送端口信息-》同步-》命令傳播

命令傳播當完成了同步之後,主從服務器就會進入命令傳播階段,這時主服務器只要一直將自己執行的寫命令發送給從服務器,而從服務器只要一直接收並執行主服務器發來的寫命令,就可以保證主從服務器一直保持一致了。

心跳檢測

在命令傳播階段,從服務器默認會以每秒一次的頻率,向主服務器發送命令,通過向主服務器發送命令來進行心跳檢測,以及命令丟失檢測

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