Redis 常见的集群架构

Redis 常见的集群架构

以下是 Redis 常见的集群架构及其核心模式详解,结合其设计原理、适用场景和优缺点进行综合说明:


一、主从复制模式

架构原理

  • 角色划分:包含一个主节点(Master)和多个从节点(Slave)。主节点处理所有写操作,从节点通过异步复制同步主节点数据,仅支持读操作。
  • 数据同步:首次连接时从节点触发全量同步(RDB快照),后续通过增量命令(AOF)保持数据一致性。
  • 手动故障恢复:主节点宕机时需人工干预将从节点提升为新主节点。

优缺点

  • 优点读写分离提升读性能;部署简单,适合小规模场景。
  • 缺点:无自动故障转移;数据量受单机内存限制;主节点宕机导致写服务中断。

适用场景:数据备份、读请求远多于写的场景(如缓存系统)。

架构图 :

image


二、哨兵模式(Sentinel)

架构原理

  • 哨兵集群:由多个哨兵节点组成,监控主从节点状态,通过 Raft 算法选举 Leader 哨兵主导故障转移。
  • 自动故障切换:主节点客观下线后,根据优先级、复制偏移量等规则选举新主节点,并通知客户端更新配置。
  • 弱一致性:数据同步异步进行,故障转移期间可能出现短暂数据不一致。

优缺点

  • 优点:高可用性,自动容错;支持读写分离。
  • 缺点数据存储未分片,内存和写入性能受单节点限制;需额外维护哨兵集群。

适用场景:中小规模系统,需高可用但无需分片的场景(如核心业务缓存)。

架构图 :

![Editor _ Mermaid Chart-2025-04-14-062928](https://i-blog.csdnimg.cn/direct/fe2f103e93034d218e2f39df9fa8a320.png)​

三、Cluster 模式(官方分布式方案)

架构原理

  • 数据分片:通过哈希槽(16384个槽位)将数据分布到多个主节点,客户端请求由节点自动路由。
  • 多主多从:每个主节点对应一至多个从节点,支持自动故障转移。默认情况下 从节点只是做为热备节点,不参与读。从而保证数据一致性
  • 去中心化:节点间通过 Gossip 协议通信,无需依赖外部代理。

优缺点

  • 优点:支持横向扩展;高可用性与高性能结合;数据分散存储突破单机内存限制。
  • 缺点:不支持跨节点事务和多键操作(如 MGET);配置复杂度较高。

适用场景:大规模数据存储和高并发场景(如电商库存系统)。

架构图:

Editor _ Mermaid Chart-2025-04-14-070549


四、 代理模式 (第三方扩展方案)

1. Codis
  • 架构:通过代理层(Codis-Proxy)实现数据分片,依赖 ZooKeeper 管理元数据。

  • 特点:支持平滑扩容;兼容 Redis 协议,客户端无感知。

  • 缺点:需修改 Redis 源码(codis-server);依赖外部组件(如 ZooKeeper)。

  • 架构图 :

    Editor _ Mermaid Chart-2025-04-14-072219

2. Twemproxy
  • 架构:轻量级代理,支持多 Redis 实例分片和负载均衡。
  • 特点:部署简单;性能损失约 20%。
  • 缺点:代理层单点故障;不支持动态扩缩容。

适用场景:需快速实现分片但暂不迁移至 Cluster 的过渡方案。


五、模式对比与选型建议

模式数据分片自动容错扩展性适用规模
主从复制低(垂直扩展)小数据量、低并发
哨兵模式中(主从复制)中小规模高可用场景
Cluster 模式高(水平扩展)海量数据、高并发
Codis/Twemproxy✅(代理层)中(依赖代理配置)过渡或特定分片需求

选型建议

  • 优先选择 Redis Cluster:适用于大规模分布式场景,兼顾分片与高可用。
  • 慎用主从/哨兵模式:仅适合数据量小且无分片需求的场景。
  • 代理模式的妥协:在无法升级到 Cluster 时选择,但需权衡运维成本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/76751.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试宝典(C++基础)-01

文章目录 1. C++基础1.1 C++特点1.2 说说C语言和C++的区别1.3 说说 C++中 struct 和 class 的区别1.4 include头文件的顺序以及双引号""和尖括号<>的区别1.5 说说C++结构体和C结构体的区别1.6 导入C函数的关键字是什么,C++编译时和C有什么不同?1.7 C++从代码…

快速获得ecovadis认证的方法,如何提升ecovadis认证分数,有效期是多久

快速获得EcoVadis认证的方法 EcoVadis认证是企业社会责任&#xff08;CSR&#xff09;和可持续发展能力的国际评估标准&#xff0c;被广泛应用于供应链管理&#xff08;如苹果、微软、联合利华等巨头要求供应商通过EcoVadis评估&#xff09;。以下是快速获得认证的关键步骤&am…

ubuntu 安装samba

ubuntu 版本&#xff1a;Ubuntu 24.04.2 LTS 1. 保证连网 2. 安装samba sudo apt install samba 在安装结束以后&#xff0c;我们可以使用下面的命令来查看安装&#xff1a; apt list | grep samba freeipa-client-samba/noble 4.11.1-2 amd64 ldb-tools/noble 2:2.8.0samba…

基于SpringBoot的宠物健康咨询系统(源码+数据库+万字文档)

502基于SpringBoot的宠物健康咨询系统&#xff0c;系统包含三种角色&#xff1a;管理员、用户&#xff0c;顾问主要功能如下。 【用户功能】 1. 首页&#xff1a;查看系统主要信息和最新动态。 2. 公告&#xff1a;浏览系统发布的公告信息。 3. 顾问&#xff1a;浏览可提供咨询…

人工智能驱动的科研新范式及学科应用研究

人工智能&#xff08;AI&#xff09;驱动的科研新范式通过数据、算力、算法的深度耦合深度嵌入科学研究的全过程&#xff0c;引发科研流程、思考逻辑和组织模式的深刻变革。文章系统总结了AI驱动科研新范式的主要特征与形式&#xff0c;提出AI驱动科研新范式的演化方向由“科研…

代码生成工具explain的高级用法

修改 explain.cpp 中的模板部分&#xff1a; // 添加自定义头文件 cout << "#include \"CustomLib.h\"\n"; 生成支持日志的记录代码&#xff1a; cout << "Logger::init();\n"; // 自动插入初始化代码其他汇总 Magnet 多线程控制…

Vue3+elementPlus中 树形控件封装

1.组件 <template><div class"selection"><el-select placeholder"请选择" v-model"nameList" clearable clear"handleClear" ref"selectUpResId" style"width: 100%"><el-option hidden :…

辉视监狱广播对讲系统:SIP协议赋能智慧监管新生态

一、全域互联&#xff1a;构建监狱安防设备协同生态 基于SIP协议的辉视广播对讲系统&#xff0c;以"通信中枢"角色打破设备壁垒。其强大的兼容性可无缝对接监狱现有监控、门禁、报警等异构设备&#xff0c;支持GB/T 28181国标协议&#xff0c;实现跨品牌、跨系统的数…

信息系统项目管理师-工具名词解释(上)

本文章记录学习过程中,重要的知识点,是否为重点的依据,来源于官方教材和历年考题,持续更新共勉 本文章记录学习过程中,重要的知识点,是否为重点的依据,来源于官方教材和历年考题,持续更新共勉 数据收集 头脑风暴 在短时间内获得大量创意,适用于团队环境,需要引导者…

C++之二叉搜索树

目录 ⼆叉搜索树的概念 二叉搜索数的性能分析 二叉搜索树的模拟实现 定义二叉树节点结构 二叉搜索树的插入 二叉搜索树的查找 二叉搜索树的删除 中序遍历 全部代码 二叉搜索树key和key/value使用场景 key搜索场景&#xff1a; key/value搜索场景&#xff1a; key/value…

数据结构——哈希详解

数据结构——哈希详解 目录 一、哈希的定义 二、六种哈希函数的构造方法 2.1 除留取余法 2.2 平方取中法 2.3 随机数法 2.4 折叠法 2.5 数字分析法 2.6 直接定值法 三、四种解决哈希冲突的方法 3.1 开放地址法 3.1.1 线性探测法 3.1.2 二次探测法 3.2 链地址法 3…

使用U盘安装 ubuntu 系统

1. 准备U 盘制作镜像 1.1 下载 ubuntu iso https://ubuntu.com/download/ 这里有多个版本以供下载&#xff0c;本文选择桌面版。 1.2 下载rufus https://rufus.ie/downloads/ 1.3 以管理员身份运行 rufus 设备选择你用来制作启动项的U盘&#xff0c;不能选错了&#xff1b;点…

RadioMaster POCKET遥控器进入ExpressLRS界面一直显示Loading的问题解决方法

RadioMaster POCKET遥控器进入ExpressLRS界面一直显示Loading的问题解决方法 问题描述解决方法 问题描述 有一天我发现我的 RadioMaster POCKET 遥控器进入 ExpressLRS 设置界面时&#xff0c;界面却一直停留在 “Loading” 状态&#xff0c;完全无法进入设置界面。 我并没有…

计算机网络 - 三次握手相关问题

通过一些问题来讨论 TCP 协议中的三次握手机制 说一下三次握手的大致过程&#xff1f;为什么需要三次握手&#xff1f;2 次不可以吗&#xff1f;第三次握手&#xff0c;可以携带数据吗&#xff1f;第二次呢&#xff1f;三次握手连接阶段&#xff0c;最后一次ACK包丢失&#xf…

【RabbitMQ】核心概念和工作流程

文章目录 RabbitMQ 工作流程流程图 Producer 和 ConsumerConnecting 和 ChannelVirtual hostQueueExchangeRabbitMQ 工作流程 RabbitMQ 工作流程 流程图 RabbitMQ 就是一个生产者/消费者模型 Producer 就是生产者、Consumer 就是消费者Broker 是 RabbitMQ 服务器生产者和消费…

龙虎榜——20250414

今天缩量上涨有些乏力&#xff0c;压力位还在~ 2025年4月14日龙虎榜行业方向分析 一、核心主线方向 黄金与贵金属&#xff08;避险逻辑强化&#xff09; • 驱动逻辑&#xff1a;国际地缘冲突持续升温&#xff08;如中东局势、台海动态&#xff09;&#xff0c;叠加美国特朗普…

蔚来汽车智能座舱接入通义大模型,并使用通义灵码全面提效

为加速AI应用在企业市场落地&#xff0c;4月9日&#xff0c;阿里云在北京召开AI势能大会。阿里云智能集团资深副总裁、公共云事业部总裁刘伟光发表主题演讲&#xff0c;大模型的社会价值正在企业市场释放&#xff0c;阿里云将坚定投入&#xff0c;打造全栈领先的技术&#xff0…

探索 Go 与 Python:性能、适用场景与开发效率对比

1 性能对比&#xff1a;执行速度与资源占用 1.1 Go 的性能优势 Go 语言被设计为具有高效的执行速度和低资源占用。它编译后生成的是机器码&#xff0c;能够直接在硬件上运行&#xff0c;避免了 Python 解释执行的开销。 以下是一个用 Go 实现的简单循环计算代码&#xff1a; …

虚幻引擎 Anim To Tex| RVT | RT

本文上篇分为4个部分&#xff1a;动画驱动材质&#xff0c;虚拟纹理&#xff0c;Rendertarget&#xff0c;以及其他杂项的地编ta干货整理。&#xff08;其中RT部分基本为UOD重要截图摘录&#xff09; 本文下篇为&#xff1a;skylight和directional light的区别&#xff0c;未完…

kingbase权限管理

1. kingbase模式权限管理 1.1授予用户对模式的权限 以具有足够权限的用户登录后&#xff0c;执行以下 SQL 语句来授予用户对模式的相应权限。假设你要授予用户 your_user 对模式 your_schema 的使用权限&#xff1a; sql -- 授予用户使用模式的权限 GRANT USAGE ON SCHEMA …