Redis-主從同步
1、CAP原理:分散式系統理論基石
1)C - Consistent ,一致性,A - Availability ,可用性,P - Partition tolerance ,分割槽容忍性
2、網路分割槽:網路斷開的場景
3、特點:網路分割槽發生時,一致性和可用性倆難全
4、最終一致性:Redis主從資料是非同步7同步的。所以分散式的Redis不滿足一致性的要求,但是Redis的主節點修改資料後,立即返回,即使主從網路斷開,主節點依舊能正常對外提供服務,所有Redis滿足可用性;如果網路斷開,主從節點的資料將出現大量不一致,一旦網路恢復,從節點會採用多種策略同步主節點的資料,繼續儘量保持與主節點一致。最終也就保證了最終一致性
5、增量同步:Redis開始同步的是指令流,主節點會將哪些對自己狀態有修改的指令,儲存到本地Buffer中,然後非同步同步到從節點,從節點一邊執行同步指令,一邊反饋同步同步的偏移量,本地Buffer的大小是有限的,如果從節點由於網路斷開或者其他的原因,短時間無法與主節點同步,Redis主節點中哪些沒有同步的指令在buffer中可能被後續的指令覆蓋掉了,這時候就要執行更復雜的同步機制-快照同步
6、快照同步:他首先在主庫上進行一次bgsave,將當前記憶體資料全部快照到磁碟檔案中,然後再將快照檔案的內容全部傳送到從節點,從節點接受完畢後,立刻執行一次全量載入,載入之前,清空當前記憶體資料,載入完成後,繼續進行增量同步
由於在快照同步的過程中,主節點複製的buffer還在不停的向前移動,如果快照時間太長或者是buffer太小,會導致當前的buffer資料又被後續的資料覆蓋掉,這樣會導致無法進行增量同步,然後再發起一次快照同步,所以要配置一個合適的複製buffer大戲哦引數
7、無盤複製:Redis在2.8.18版本開始支援,指主伺服器直接通過套接字將快照內容傳送到從節點,主節點一邊遍歷記憶體,一邊將序列化的內容傳送到從節點,從節點將收到的內容持久化到磁碟檔案中,再進行一次載入,省略了主節點持久化記憶體的過程,提高了同步效率
8、wait指令:在Redis3.0版本以後,可以讓非同步複製變為同步複製,確保系統的強一致性(不嚴格),指令 wait N t ,N的含義是從庫的數量N,t以毫秒為單位,表示等待wait命令之前所有的寫操作同步到N個從節點最多等待的時間,如果t為0,表示無限等待,直到同步完成,但是如果同步過程中,發生分割槽,則wait指令會永遠阻塞,Redis伺服器將喪失可用性。
9、主從主要是為了保障Redis的高可用性,同時也能兼顧提升效能