Redis 主從復制、哨兵與集群的關系及工作原理詳解

一、核心概念與關系

Redis 的?主從復制哨兵(Sentinel)?和?集群(Cluster)?是逐步演進的高可用與分布式解決方案,三者關系如下:

  1. 主從復制:數據冗余與讀寫分離的基礎。

  2. 哨兵:在主從基礎上實現自動故障轉移(高可用)。

  3. 集群:在分片(Sharding)基礎上集成主從復制和自動故障轉移(分布式+高可用)。

三者關系可總結為:

  • 主從復制?是數據同步的基礎機制。

  • 哨兵?是主從的增強,提供故障檢測與自動切換。

  • 集群?是更高維度的分布式架構,融合主從復制和分片技術。


二、主從復制(Master-Slave Replication)
1. 核心作用
  • 數據冗余:從節點(Slave)復制主節點(Master)數據,實現備份。

  • 讀寫分離:主節點處理寫請求,從節點處理讀請求,提升讀吞吐量。

2. 工作原理
  1. 全量同步

    • 從節點首次連接主節點時,主節點生成 RDB 快照發送給從節點。

    • 從節點加載 RDB 文件完成初始數據復制。

  2. 增量同步

    • 主節點將寫命令寫入?復制緩沖區(Replication Buffer)

    • 從節點持續接收并執行緩沖區中的命令,保持數據一致性。

3. 架構局限
  • 單點故障:主節點宕機后需手動切換從節點為主節點。

  • 寫性能瓶頸:所有寫操作集中在主節點。


三、哨兵(Sentinel)
1. 核心作用
  • 監控:持續檢查主從節點健康狀態。

  • 自動故障轉移:主節點宕機時,選舉新主節點并通知客戶端。

  • 配置中心:客戶端通過哨兵獲取最新的主節點地址。

2. 工作原理
  1. 監控階段

    • 哨兵通過定期發送?PING?命令檢測節點狀態。

    • 若主節點未響應,哨兵將其標記為?主觀下線(SDOWN)

  2. 選舉階段

    • 多個哨兵協商確認主節點?客觀下線(ODOWN)

    • 哨兵通過 Raft 算法選舉?領導者哨兵?負責故障轉移。

  3. 故障轉移

    • 領導者哨兵從從節點中選出新主節點(基于優先級、復制偏移量等)。

    • 通知其他從節點復制新主節點,并更新客戶端連接。

3.經典架構

  1.            +------------+  |  Sentinel  |  +------------+  |  
    +------------+     |      +------------+  
    |  Master    |<----+----->|  Slave 1   |  
    +------------+            +------------+  |  v  
    +------------+  
    |  Slave 2   |  
    +------------+  

4.適用場景

  • 中小規模 Redis 服務,需要高可用但無需水平擴展

四、Redis 集群(Cluster)
1. 核心作用
  • 數據分片(Sharding):將數據分布到多個節點,突破單機內存限制。

  • 高可用:每個分片(Shard)采用主從復制,支持自動故障轉移。

2. 工作原理
  1. 分片機制

    • 集群將數據劃分為?16384 個哈希槽(Slot),每個節點負責部分槽。

    • 客戶端通過?CRC16(key) % 16384?計算 key 所屬槽,路由到對應節點。

  2. 節點通信

    • 節點間通過?Gossip 協議?交換狀態信息(如槽分配、節點狀態)。

  3. 故障轉移

    • 若主節點宕機,其從節點通過?選舉機制?升級為新主節點(類似哨兵)。

    • 客戶端自動重定向到新主節點。

3. 典型架構
+----------------+       +----------------+  
|  Master 1      |<----->|  Slave 1-1     |  
| (Slots 0-5460) |       | (Replica)      |  
+----------------+       +----------------+  |  v  
+----------------+       +----------------+  
|  Master 2      |<----->|  Slave 2-1     |  
| (Slots 5461-10922)|    | (Replica)      |  
+----------------+       +----------------+  |  v  
+----------------+       +----------------+  
|  Master 3      |<----->|  Slave 3-1     |  
| (Slots 10923-16383) |  | (Replica)      |  
+----------------+       +----------------+  
4. 關鍵特性
  • 數據遷移:支持動態增刪節點,槽可重新分配。

  • 跨槽操作限制MGETMSET?等命令需所有 key 在同一節點,否則需用?{hash_tag}?強制路由。

5. 適用場景
  • 大規模數據存儲,需水平擴展和高可用性。

五、三者對比總結
特性主從復制哨兵模式集群模式
核心目標數據冗余、讀寫分離高可用(自動故障轉移)分布式存儲 + 高可用
數據分布全量復制全量復制分片(16384 槽)
故障處理手動切換自動切換自動切換(內置哨兵邏輯)
擴展性垂直擴展(單機)垂直擴展水平擴展(多節點分片)
適用場景小型應用中小型高可用場景大型分布式系統

六、常見問題解答

Q1:集群模式下還需要哨兵嗎?

  • 不需要。集群內置了故障檢測與轉移邏輯,無需額外部署哨兵。

Q2:主從復制能否與集群共存?

  • 可以。集群中的每個分片(主節點)可配置多個從節點,形成“主從+集群”架構。

Q3:如何選擇架構?

  • 數據量小 + 高可用需求?→ 哨兵模式。

  • 數據量大 + 高可用需求?→ 集群模式。

Q4:集群的故障轉移時間?

  • 通常 10~30 秒,依賴節點狀態檢測和選舉機制。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72571.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72571.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72571.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

確認機制的分類及其區別與聯系探討

在傳輸控制中&#xff0c;確認機制&#xff08;ACK 機制&#xff09;作為反饋模塊在實現擁塞控制、丟包恢復和狀態監測等功能中起到了至關重要的作用。今天我將基于之前發表的論文研究成果&#xff0c;對確認機制的分類進行系統梳理&#xff0c;并討論各類機制之間的區別與聯系…

115 道 MySQL 面試題,從簡單到深入!

1. 什么是數據庫事務&#xff1f; 數據庫事務是一個作為單個邏輯工作單元執行的一系列操作。事務具有ACID屬性&#xff0c;即原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔離性&#xff08;Isolation&#xff09;和持久性&#xf…

Linux - 網絡套接字

一、網絡編程 1&#xff09;地址結構 1. IP地址結構 struct in_addr&#xff1a;是用于表示 IPv4 地址 的結構體&#xff0c;定義在頭文件 <netinet/in.h> 中。它的主要作用是存儲一個 32 位的 IPv4 地址&#xff0c;通常與 struct sockaddr_in 一起使用。 struct in_a…

程序員學商務英語之Visiting the Factory

Dialogue-1 Arranging a Visit安排參觀 I was wondering if you would / could lend me a million bucks, you know, I’m trying to start / run my own business. 我想知道你是否能夠借給我一百萬美金&#xff0c;你知道&#xff0c;我正在創業。 Take off your tie befor…

機器視覺運動控制一體機在天地蓋同步跟隨貼合解決方案

市場應用背景 紙盒天地蓋是一種包裝形式&#xff0c;廣泛應用于消費電子、食品禮盒、奢侈品及化妝品等領域。其采用高強度紙板&#xff0c;經過預組裝處理&#xff0c;結構堅固穩定&#xff0c;能有效保護產品并提升品牌形象。隨著包裝行業快速發展&#xff0c;市場對天地蓋的…

【智能體Agent】ReAct智能體的實現思路和關鍵技術

基于ReAct&#xff08;Reasoning Acting&#xff09;框架的自主智能體 import re from typing import List, Tuplefrom langchain_community.chat_message_histories.in_memory import ChatMessageHistory from langchain_core.language_models.chat_models import BaseChatM…

Electron打包工具對比

在 Electron 生態中&#xff0c;打包工具的選擇直接影響開發效率、配置復雜度和最終應用的性能。以下是主流的 Electron 打包工具及其優劣分析&#xff0c;結合你的 Vue 項目需求&#xff0c;我會在最后給出推薦方案&#xff1a; 一、主流 Electron 打包工具對比 1. Electron …

云原生系列之本地k8s環境搭建

前置條件 Windows 11 家庭中文版&#xff0c;版本號 23H2 云原生環境搭建 操作系統啟用wsl(windows subsystem for linux) 開啟wsl功能&#xff0c;如下圖 安裝并開啟github加速器 FastGithub 2.1 下載地址&#xff1a;點擊下載 2.2 解壓安裝文件fastgithub_win-x64.zip 2…

【計算機網絡入門】TCP擁塞控制

目錄 1. TCP擁塞控制和TCP流量控制的區別 2. 檢測到擁塞該怎么辦 2.1 如何判斷網絡擁塞&#xff1f; 3. 慢開始算法 擁塞避免算法 4.快重傳事件->快恢復算法 5. 總結 1. TCP擁塞控制和TCP流量控制的區別 TCP流量控制是控制端對端的數據發送量。是局部的概念。 TCP擁…

Spring Boot 整合 JMS-ActiveMQ,并安裝 ActiveMQ

1. 安裝 ActiveMQ 1.1 下載 ActiveMQ 訪問 ActiveMQ 官方下載頁面&#xff0c;根據你的操作系統選擇合適的版本進行下載。這里以 Linux 系統&#xff0c;Java環境1.8版本為例&#xff0c;下載 apache-activemq-5.16.7-bin.tar.gz。 1.2 解壓文件 將下載的壓縮包解壓到指定目…

《幾何原本》命題I.13

《幾何原本》命題I.13 兩條直線相交&#xff0c;鄰角是兩個直角或者相加等于 18 0 ° 180^{\circ} 180°。 若兩角相等&#xff0c;則根據定義&#xff0c;兩角為直角。 兩角若不相等&#xff0c;如圖&#xff0c;則 ( ∠ 1 ∠ 2 ) ∠ 3 ∠ 1 ( ∠ 2 ∠ 3 ) 9 0 ° …

優先級隊列:通過堆的形式實現

描述: 大頂堆: 小頂堆: 索引位置查找: 代碼實現: package com.zy.queue_code.deque;/*** @Author: zy* @Date: 2025-03-05-15:51* @Description:*/ public interface Priority

《OpenCV》—— dlib庫

文章目錄 dlib庫是什么&#xff1f;OpenCV庫與dlib庫對比dlib庫安裝dlib——人臉應用實例——人臉檢測dlib——人臉應用實例——人臉關鍵點定位dlib——人臉應用實例——人臉輪廓繪制 dlib庫是什么&#xff1f; OpenCV庫與dlib庫對比 dlib庫安裝 dlib——人臉應用實例——人臉檢…

藍橋與力扣刷題(藍橋 旋轉)

題目&#xff1a;圖片旋轉是對圖片最簡單的處理方式之一&#xff0c;在本題中&#xff0c;你需要對圖片順時針旋轉 90 度。 我們用一個 nm的二維數組來表示一個圖片&#xff0c;例如下面給出一個 34 的 圖片的例子&#xff1a; 1 3 5 7 9 8 7 6 3 5 9 7 這個圖片順時針旋轉…

隨機播放音樂 偽隨機

import java.util.*;/*** https://cloud.tencent.com.cn/developer/news/1045747* 偽隨機播放音樂*/ public class MusicPlayer {private List<String> allSongs; // 所有歌曲列表private List<String> playedSongs; // 已經播放過的歌曲列表private Map<String…

MiniMind用極低的成本訓練屬于自己的大模型

本篇文章主要講解&#xff0c;如何通過極低的成本訓練自己的大模型的方法和教程&#xff0c;通過MiniMind快速實現普通家用電腦的模型訓練。 日期&#xff1a;2025年3月5日 作者&#xff1a;任聰聰 一、MiniMind 介紹 基本信息 在2小時&#xff0c;訓練出屬于自己的28M大模型。…

區塊鏈中的數字簽名:安全性與可信度的核心

數字簽名是區塊鏈技術的信任基石&#xff0c;它像區塊鏈世界的身份證和防偽標簽&#xff0c;確保每一筆交易的真實性、完整性和不可抵賴性。本文會用通俗的語言&#xff0c;帶你徹底搞懂區塊鏈中的數字簽名&#xff01; 文章目錄 1. 數字簽名是什么&#xff1f;從現實世界到區塊…

LLM自動金融量化-CFGPT

LLM自動金融量化-CFGPT 簡介 CFGPT是一個開源的語言模型,首先通過在收集和清理的中國金融文本數據(CFData-pt)上進行繼續預訓練,包括金融領域特定數據(公告、金融文章、金融考試、金融新聞、金融研究論文)和通用數據(維基百科),然后使用知識密集的指導調整數據(CFD…

解決Docker拉取鏡像超時錯誤,docker: Error response from daemon:

當使用docker pull或docker run時遇到net/http: request canceled while waiting for connection的報錯&#xff0c;說明Docker客戶端在訪問Docker Hub時出現網絡連接問題。可以不用掛加速器也能解決&#xff0c;linux不好用clash。以下是經過驗證的方法&#xff08;感謝軒轅鏡…

03.05 QT事件

實現一個繪圖工具&#xff0c;具備以下功能&#xff1a; 鼠標繪制線條。 實時調整線條顏色和粗細。 橡皮擦功能&#xff0c;覆蓋繪制內容。 撤銷功能&#xff0c;ctrl z 快捷鍵撤銷最后一筆 程序代碼&#xff1a; <1> Widget.h: #ifndef WIDGET_H #define WIDGET…