分散式Redis主備複製
當資料落在不同節點上時,如何保證資料節點之間的一致性是非常關鍵的
Redis採用主備複製的方式保證一致性,所有節點中,只有一個節點為主節點(master),它對外提供寫服務,然後非同步的將資料複製到其他節點上
主備複製流程
Redis包含master 和slave 2種節點:
master 對外提供寫服務
slave 節點作為master的資料備份,不可以提供寫服務
主備複製由master 主動觸發
1、首先slave向master發起SYNC命令。這一步在slave啟動後觸發,master 被動的將新slave節點加入主備複製叢集
2、master收到SYNC後,開啟BGSAVE 操作。BGSAVE 是Redis的一種全量持久化機制(RDB)
3、BGSAVE完成後,master將快照資訊傳送給slave
4、傳送期間,master收到來自Client的新寫入命令,除了正常響應外,再存入一份到backlog佇列
5、快照資訊傳送完成後,master繼續傳送backlog佇列中的資訊
6、backlog傳送完成之後,後續的操作同時發給slave,保持實時的非同步複製
對於上面的slave節點,處理邏輯如下:
傳送完SYNC後,繼續對外提供服務
開始接受master的快照資訊,此時會清空slave現有資料,並將master快照寫入
接收backlog 並執行(回放),期間對外提供讀服務
繼續接受master的命令副本,並繼續回放,從而保持和master的資料一致性
如果有多個slave 同時傳送SYNC 命令
只要第2個slave的SYNC 命令發生在master 完成BGSAVE之前,第2個slave 將和第1個收到相同的快照和backlog
否則第2個slave的SYNC將觸發master的第2次BGSAVE
斷點續傳
當每次slave 透過SYNC 和master同步資料時,master都會dump 全量資料併傳送
當一個已經和master 完成了同步,並且並保持了長時間的slave,當網路斷開很短時間再重新連上時,master不得不重新做一次全量的dump傳送。這種無疑會增加大量的無效開銷,最好的方式是隻同步網路斷開期間的增量資料。
Redis的 PSYNC(Partial Sync)可以用於代替SYNC,做到master-slave基於斷點續傳的主備同步協議。master-slave 2端透過維護一個offset記錄當前已經同步的命令,slave斷開期間,master的增量命令會儲存在快取中。當slave重連後,告知master斷開時的offset,master會將後續的資料繼續同步,從而完成了斷點續傳。
作者:芥末無疆sss
連結:
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/854/viewspace-2815718/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分散式Redis深度歷險-複製分散式Redis
- 使用Redis分散式鎖實現主備Redis分散式
- MIT 6.824 分散式系統課程第四課:主備複製MIT分散式
- Redis:主從複製Redis
- Redis - 主從複製Redis
- Redis主從複製Redis
- redis系列--主從複製以及redis複製演進Redis
- Redis系列(四):Redis的複製機制(主從複製)Redis
- redis系列:主從複製Redis
- Redis 主從複製原理Redis
- redis(14)主從複製Redis
- Redis 主從複製(Replication)Redis
- redis學習十四、Redis主從複製Redis
- Redis主從複製流程概述Redis
- Redis主從複製原理剖析Redis
- Redis 主從複製與哨兵Redis
- redis 主從複製實現Redis
- redis-23.主從複製Redis
- Redis-14-主從複製Redis
- 【PG流複製】Postgresql流複製主備切換SQL
- redis 深入理解redis 主從複製原理Redis
- 詳談Redis主從複製原理Redis
- redis的主從複製的原理Redis
- redis持久化和主從複製Redis持久化
- Redis 主從複製技術原理Redis
- Redis主從複製那點事Redis
- redis-23.主從複製-概念Redis
- Docker 搭建KingbaseES主備流複製Docker
- 【中介軟體】Redis 實戰之主從複製、高可用、分散式Redis分散式
- 分散式之 Redis 複習精講分散式Redis
- 圖解Redis,Redis主從複製與Redis哨兵機制圖解Redis
- redis建立主從複製的過程Redis
- 深入學習 Redis(3):主從複製Redis
- 深入學習Redis(3):主從複製Redis
- redis主從複製幾種結構Redis
- Redis 主從複製詳細解讀Redis
- Redis搭建主從複製、哨兵叢集Redis
- Redis日常運維-02主從複製Redis運維