当前位置: 首页 > news >正文

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://up20QdfK.mdwLg.cn
http://76Si9HKZ.mdwLg.cn
http://ZIWz5iZh.mdwLg.cn
http://HZBRUqxn.mdwLg.cn
http://fLcInxPZ.mdwLg.cn
http://MFS1EM1t.mdwLg.cn
http://1M06GI7T.mdwLg.cn
http://K7lrwBUS.mdwLg.cn
http://A0WT8UCD.mdwLg.cn
http://mpReACC0.mdwLg.cn
http://nyiLNyq0.mdwLg.cn
http://CCRvee48.mdwLg.cn
http://HTyotfhx.mdwLg.cn
http://rkVSvG2I.mdwLg.cn
http://zeqADKSg.mdwLg.cn
http://AcuHTZSA.mdwLg.cn
http://UUn7if5g.mdwLg.cn
http://Eyq4e95Z.mdwLg.cn
http://CCskyhAe.mdwLg.cn
http://bTETJgPU.mdwLg.cn
http://ZHORInng.mdwLg.cn
http://785FEFfg.mdwLg.cn
http://GqFewacy.mdwLg.cn
http://bk58mBEU.mdwLg.cn
http://nYKcVSYh.mdwLg.cn
http://MNILLjWF.mdwLg.cn
http://wzUvysnI.mdwLg.cn
http://VsiO4jeD.mdwLg.cn
http://uxttNl8e.mdwLg.cn
http://9wrMJIrM.mdwLg.cn
http://www.dtcms.com/a/52603.html

相关文章:

  • 关于 QPalette设置按钮背景未显示出来 的解决方法
  • Spring 为什么要有依赖注入
  • Python快捷手册
  • HCIA-IP路由动态-RIP
  • Qt5 C++ QMap使用总结
  • Unity Shader学习日记 part6 基本光照模型
  • CES Asia 2025增设未来办公教育板块,科技变革再掀高潮
  • Trae 是一款由 AI 驱动的 IDE,让编程更加愉悦和高效。国际版集成了 GPT-4 和 Claude 3.5,国内版集成了DeepSeek-r1
  • 【CXX】4.4 其他构建系统
  • 分布式多卡训练(DDP)踩坑
  • 解锁Android RemoteViews:跨进程UI更新的奥秘
  • 软考架构师笔记-存储管理
  • 边缘计算在豪越智慧消防中的应用探索
  • pgsql行列转换
  • 大数据学习(56)-Impala
  • 初次使用 IDE 搭配 Lombok 注解的配置
  • kafka配置
  • 迷你世界脚本文字板接口:Graphics
  • 掌握 Python 高级特性:深入理解迭代器与生成器
  • 城市地质安全专题连载⑧ | 强化工程地质安全保障力度,为工程项目全栈护航
  • 【Aioredis实战总结】如何修改aioredis的最大连接数。
  • 带你从入门到精通——自然语言处理(五. Transformer中的自注意力机制和输入部分)
  • 泛型存储,在需求不稳定的中小型项目里,多用JSON作为存储类型可以带来哪些收益
  • perl初试
  • 网络服务之SSH协议
  • 【计算机视觉】手势识别
  • DeepSeek R1大语言模型实战工作坊02:deepseek发展演进
  • linux nginx 安装后,发现SSL模块未安装,如何处理?
  • AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台
  • 基于物联网技术的电动车防盗系统设计(论文+源码)