目 录CONTENT

文章目录

Redis 集群模式详解

BKUN
2023-06-20 / 0 评论 / 0 点赞 / 529 阅读 / 1,098 字

🚀 Redis 集群模式详解

Redis 提供了三种集群模式:主从模式哨兵模式Cluster 模式。其中,主从模式最为常见。本文将详细介绍这三种模式的概念、原理、优缺点及示意图,快来一起学习吧!📚


🌟 三种集群模式概览

  • 主从模式:基础的高可用方案,实现读写分离。
  • 哨兵模式 (Sentinel):在主从基础上增加监控和自动故障转移。
  • Cluster 模式:官方分布式解决方案,支持分片存储和高可用。

1️⃣ 主从复制

1.1 主从模式示意图

主从模式

1.2 Redis 复制原理

Redis 主从复制分为两部分:同步 (SYNC)命令传播 (Command Propagate)

  • 同步 (SYNC)
    • 从服务器主动获取主服务器数据,保持一致。
    • 流程:从服务器发送 SYNC 命令 → 主服务器生成 RDB 快照 → 发送给从服务器。
  • 命令传播 (Command Propagate)
    • 主服务器数据修改后,将命令传播给从服务器。
    • 流程:主服务器缓存修改命令 → 发送给从服务器 → 从服务器执行命令保持一致。
  • 为何需要两种操作?
    • 仅同步时,主服务器生成 RDB 期间仍会接收新命令,若无命令传播,会导致主从数据不一致。因此,命令传播弥补了这段时间的差异。

1.3 主从复制流程

以下两图展示了复制过程:
同步流程
命令传播

1.4 优缺点

  • 优点
    1. 读写分离,提高可用性,解决单机故障。
    2. 主从复制期间,主从均为非阻塞,服务仍可用。
  • 缺点
    1. 主节点宕机需手动切换,可能导致数据不一致。
    2. 多从节点同时恢复时,大量 SYNC 请求可能压垮主节点 IO。
    3. 在线扩容复杂。

1.5 总结

主从模式通过复制提升了可用性,但手动切换和扩容是其短板。


2️⃣ Sentinel 哨兵模式

2.1 Sentinel 系统

哨兵模式是 Redis 的高可用解决方案,通过一个或多个 Sentinel 实例监控主从集群,并在主节点下线时自动切换从节点为主节点。

系统架构图

Sentinel 系统

监控过程

  • Sentinel 通过发送命令(如 PING)监控 Redis 服务器状态。
  • 通过发布订阅模式通知状态变化。

2.2 故障转移

转移过程

  1. 主节点 (Server1) 下线:
    主节点下线
  2. Sentinel 将从节点 (Server2) 升级为主节点:
    从节点升级
  3. 原主节点恢复后降级为从节点:
    降级为主

故障检测

  1. Sentinel 每秒发送 PING 命令。
  2. 若某实例响应超时(超过 down-after-milliseconds),标记为主观下线
  3. 多个 Sentinel 确认后,标记为客观下线
    客观下线

2.3 优缺点

  • 优点
    • 继承主从模式优点。
    • 自动故障转移,提升高可用性。
  • 缺点
    • 在线扩容复杂。

2.4 总结

哨兵模式增强了主从集群的高可用性,适合需要自动切换的场景。


3️⃣ Cluster 模式

3.1 Redis Cluster 简介

Redis Cluster 是 3.0 版本引入的分布式解决方案,采用 Sharding(分片) 技术,实现高可用和分布式存储。

架构图

Cluster 模式

3.2 数据分片原理

  • Redis Cluster 使用 16384 个哈希槽
  • 每个 Key 通过 CRC16 算法计算后对 16384 取模,分配到对应槽。
  • 客户端连接任意节点,节点根据槽信息定位数据位置。

3.3 复制原理

  • 每个主节点可配多个从节点。
  • 主节点宕机时,从节点接管。
  • 若主从同时宕机,集群不可用。
  • 主节点间通过 PING 检测故障,半数以上主节点确认某节点宕机则触发切换。

3.4 优缺点

  • 优点
    • 分布式存储,节省内存。
    • 高可用与读写分离兼顾。
  • 缺点
    • 实现复杂,维护成本较高。

3.5 总结

Cluster 模式适合大规模分布式场景,兼顾高可用与资源效率。

0

评论区