❶ 【Redis】Redis 主從復制 + 讀寫分離
Redis 主從復制與讀寫分離是提升數據持久化與服務高可用性的重要策略。雖然Redis的數據持久化技術可以解決機器宕機和數據丟失問題,但要從根本上解決Redis服務的高可用性問題,還需採用其他方法以避免服務宕機。
主從復制是Redis實現高可用的一種常見模式。它通過復制主伺服器的數據到從伺服器,確保數據一致性。主節點負責數據寫入,而從節點則進行數據復制。主從復制為單向,只能由主伺服器復制到從伺服器,而不支持從伺服器回傳數據給主伺服器。可以有多個從伺服器,數量根據業務需求確定。
為了保證主從數據一致性,採用讀寫分離模式至關重要。如果所有寫操作在主從伺服器上隨機執行,可能導致數據在不同實例之間不一致。這會導致讀取數據時讀取到舊值。通過將所有寫操作限制在主伺服器上,並在完成寫操作後同步數據到從伺服器,可以確保主從數據一致性。
主從復制原理涉及全量同步和增量同步兩個階段。全量同步時,主從伺服器通過建立連接、主伺服器同步數據到從伺服器,並將增量指令發送到從伺服器完成數據復制。當主從網路斷開或從伺服器重啟後,採用增量同步,只傳輸中斷期間主伺服器執行的寫命令,以降低開銷和提升效率。
在全量復制完成後,主從伺服器之間通過基於長連接的命令傳播保持同步。主伺服器接收操作指令,並通過連接同步給從伺服器。為了確保穩定性和有效性,從伺服器採用心跳機制,通過PING和REPLCONF ACK命令進行健康狀態檢測。
主從復制是實現部分實例宕機後服務持續可用性的基礎。通過主從復制,數據可以被分散在不同伺服器上,減少單點故障風險。然而,要實現更高級的可用性優化,如故障自動轉移、異常預警和高保活,需要更復雜的解決方案,如哨兵模式或集群模式。
總結,Redis主從復制與讀寫分離策略不僅分擔了讀寫壓力,均衡了負載,還提高了服務的高可用性。通過全量復制、增量復制、命令傳播和心跳機制,確保數據一致性並保持主從伺服器之間的同步。實現主從復制後,還需考慮哨兵模式或集群模式,以應對更復雜的場景,確保服務穩定運行。