本文說明的是MySQL鎖,和操作系統或者編程語言的鎖無關。 概念 作用:在併發情況下讓數據正確的讀寫。 優點:併發情況下對數據讀寫可控,防止出錯。 缺點:降低性能、增加難度。 分類 數據操作類型劃分 讀鎖(共用鎖、S鎖) 寫鎖(排它鎖、獨占鎖、X鎖) 粒度劃分 表級鎖 S鎖、X鎖 意向鎖 自增鎖 元 ...
大家好,我是小康,今天我們來聊下 Redis 的幾種架構模式,包括主從複製、哨兵和集群模式。
前言:
設想一下,你的咖啡館在城市中太受歡迎,導致每天都人滿為患。為了緩解這種壓力,你決定在其他地方開設分店,這樣顧客就可以在附近的分店享受咖啡,而不必涌向一個地方,這就好比 Redis 的主從複製,讓數據備份並允許多個地方進行讀取。
但這還不夠,因為你需要確保當主要的咖啡館遇到問題時,例如突然斷電,有其他分店能夠迅速接手,成為新的主要店鋪,繼續為顧客提供服務。這就像 Redis 的哨兵系統,它會自動檢測故障併進行轉移,確保服務始終線上。
最後,隨著咖啡館連鎖店的增長,每家店都開始獨立運作,甚至可能有自己的特色飲品和優惠活動,同時仍然保持整體的協調和一致性。這就是 Redis 集群的工作方式,它將數據分片到不同的節點,每個節點都可以獨立處理請求,但都是整個系統的一部分。
現在,讓我們深入探討 Redis 如何通過主從複製、哨兵和集群來確保它的強大性能和高可靠性。
主從複製
主從複製基本概念
在日常工作中,我們都知道團隊合作的重要性。就像團隊中有領導者和執行者,Redis 也採用了一種類似的策略 —主從複製,使其能夠更有效地處理數據。
什麼是主從複製?
主從複製是一種允許多個 Redis 伺服器(節點)協同工作的策略。其中,一個伺服器作為“主節點”,負責接受所有寫操作。其他伺服器則作為“從節點”,複製並存儲主節點的數據。這樣,從節點可以為讀操作服務,從而分散主節點讀取壓力。
簡單圖示:
主從複製的工作原理
Redis 的主從複製功能使得一個或多個從節點可以複製一個主節點的全部數據。主節點負責進行寫操作,而從節點則可以用來進行讀操作,從而分擔讀的負載。
主從複製流程圖
步驟說明:
從節點首先執行 REPLICAOF ip port
命令,準備複製主節點的數據。
第一步:連接與同步請求
-
從節點與主節點建立 TCP 連接,並正式請求同步數據,發送 PSYNC ? -1。
-
主節點接收到請求後,向從節點回覆 FULLRESYNC runid offset ,做好開始傳輸 RDB 數據的準備。
第二步: RDB 文件同步
-
主節點執行 bgsave 命令,生成當前數據的快照—也就是 RDB 文件。
-
主節點隨後將這個 RDB 文件傳輸給從節點。
-
從節點收到 RDB 文件後,開始載入到自己的資料庫中。
第三步 : 持續命令同步
-
之後,每當主節點有新的寫命令,它都會立即傳輸給從節點並同時將新命令追加到複製緩衝區中。
-
從節點持續接收並執行這些命令,確保與主節點的數據始終保持同步。
斷線重連與部分同步
在實際應用中,因為網路不穩定、系統資源限制等因素,Redis 主從節點間的連接有時會遭遇中斷。為了應對這些突發情況並確保數據同步不被中斷,Redis 設計了一套智能的同步恢復機制: 部分同步。
斷線重連與部分同步流程圖
步驟說明: