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

Sentinel和Cluster,到底该怎么选?

图片

技术解析

Redis的主从复制拓扑,从简单到复杂,主要有以下几种形态:

1. 一主一从 (One Master - One Slave)

这是最简单、最基础的复制结构。

  • • 结构图Master ---> Slave

    图片

  • • 工作模式:

    • • Master节点负责所有的读写操作。

    • • Slave节点作为Master的一个精确副本,通常用于数据备份或读请求的分担。

  • • 优点: 部署简单,实现了一个基本的热备份。

  • • 缺点:

    • • 存在单点故障 (SPOF): Master宕机后,写服务中断。需要手动将Slave提升为Master,恢复过程有延迟且可能丢失数据。

    • • 读写压力: 如果Slave既要同步数据,又要承担所有读请求,压力会比较大。

2. 一主多从 (One Master - Multiple Slaves)

这是最常用、最经典的“读写分离”架构。

  • • 结构图:
      Master/ | \/  |  \
    S1  S2  S3

    图片

  • • 工作模式:

    • • Master节点只负责写操作。

    • • 多个Slave节点分担所有的读操作。

  • • 优点:

    • • 高读性能: 可以通过增加Slave节点的数量,线性地扩展系统的读性能。

    • • 高可用性: 任何一个Slave宕机,都不会影响整个系统。

  • • 缺点:

    • • Master写压力大: Master不仅要处理写请求,还要向所有Slave同步数据,复制压力集中在Master上。

    • • Master仍是单点: 写操作的单点故障问题依然存在。

3. 链式/树状主从 (Chained/Tree-like Replication)

这种结构通过让从节点成为其他从节点的“主节点”,来减轻主库的复制压力。

  • • 结构图Master ---> Slave1 ---> Slave2 ---> Slave3

    图片

  • • 工作模式:

    • • Master只将数据同步给Slave1。

    • • Slave1再将数据同步给Slave2,以此类推。

  • • 优点:

    • • 减轻Master负担: 极大地降低了Master的复制压力,使其能更专注于处理写请求。

  • • 缺点:

    • • 同步延迟加剧: 数据每经过一层中继,延迟就会增加。末端的Slave3数据会比Slave1滞后很多。

    • • 链路脆弱: 中间的任何一个Slave宕机,都会导致其下游的所有Slave复制中断,需要重新配置。

生产级解决方案:超越基本拓扑

以上三种是基础构件。在生产环境中,为了解决Master的单点故障问题,我们通常会引入自动化的高可用方案:

  • • 哨兵模式 (Sentinel):

    图片

    • • 本质: 一个自动化的监控和故障转移系统,它本身不存储数据。

    • • 工作模式: Sentinel进程会监控“一主多从”的拓扑结构。当它发现Master宕机时,会自动在所有Slave中选举出一个新的Master,并通知其他Slave去复制新的Master,同时通知客户端“老大换人了”。

    • • 解决了什么Master的单点故障和自动故障转移问题

  • • 集群模式 (Cluster):

    图片

    • • 本质: Redis官方提供的分布式、去中心化的解决方案。

    • • 工作模式: 数据通过哈希槽(hash slots)被自动分片存储在多个Master节点上。每个Master节点自己又可以拥有一或多个Slave节点。

    • • 解决了什么:

      • • 写性能瓶颈: 通过将数据分散到多个Master,实现了写的横向扩展

      • • 高可用: 每个Master都有备份,任何一个Master宕机,其Slave可以被集群自动提升为新的Master。


故事场景:国画大师的艺术学校

  • • 国画大师 (Master)

  • • 学徒 (Slave)

阶段一:“一对一私教” (一主一从)

  • • 学校模式: 大师在他的私人画室里,只收了一个关门弟子。他亲自手把手地教。

  • • 优点: 教学关系简单直接。

  • • 问题: 如果大师生病了(Master宕机),这位弟子的学习就完全中断了。而且,如果外面有很多人想来参观画作(读请求),都得找这个唯一的弟子,他既要学习临摹,又要接待访客,忙得不可开交(Slave压力大)。

阶段二:“大师开班授课” (一主多从)

  • • 学校模式: 大师的名气越来越大,他开了一个大型工作室,同时招收了多位学徒。他站在画室中央作画,所有学徒都直接围绕着他进行学习和临摹。

  • • 优点:

    • • 分流参观者 (读扩展): 当有访客想看大师的画风时,可以随便去任何一位学徒的画板前看,不会打扰到正在创作的大师本人。

    • • 传承有保障 (高可用): 任何一位学徒生病了,都不要紧,还有其他学徒在继续学习。

  • • 问题: 大师需要同时指导好几位学徒,确保每个人都看清楚了他的笔法,这让他有点分心(Master复制压力大)。而且,大师本人如果生病了,整个工作室还是得停摆。

阶段三:“师兄带师弟” (链式主从)

  • • 学校模式: 大师年事已高,成了泰斗。他不再亲自教每一个学生,他只教他最得意的大弟子。然后,他要求大弟子去教二弟子,二弟子再去教小师弟。

  • • 优点: 大师的负担大大减轻,他可以专注于最高深的艺术创作。

  • • 问题: 大师的一个新技法,要传到小师弟那里,会经过好几手,信息延迟很严重。而且,如果大弟子某天偷懒没来(中间节点宕机),那么他后面的所有师弟今天就都没得学了。

终极形态:引入“自动化管理”

  • • “学院董事会” (Sentinel模式):

    • • 运作方式: 学校成立了一个由几位德高望重的老先生组成的“董事会”。他们不画画,唯一的任务就是每天盯着大师的健康状况。一旦发现大师病倒了,董事会会立刻开会,从所有学徒中投票选出一位最优秀的,任命为“代理大师”,并通知其他学徒:“从现在起,你们都去临摹新大师的作品!”

    • • 解决了大师病倒后,学校无人领导的混乱局面

  • • “艺术联盟” (Cluster模式):

    • • 运作方式: 这已经不再是一所学校了。它变成了一个由多位大师组成的“艺术联盟”。

      • • 山水画大师A,带着自己的几个学徒。

      • • 花鸟画大师B,也带着自己的几个学徒。

      • • 人物画大师C,同样带着自己的学徒。

    • • 联盟Cluster)负责管理所有资源。当有客户想要一幅“山水画”时(写请求),联盟会直接把他引荐给大师A。这样,多位客户可以同时向不同的大师约稿,整个联盟的创作能力(写性能)得到了极大的扩展。同时,每位大师都有自己的学徒作为备份,保证了传承的稳定。

故事总结:

拓扑结构

核心比喻解决了什么问题?
一主一从一对一私教

基础备份

一主多从大师开班授课读性能扩展
链式主从师兄带师弟

减轻主库复制压力

哨兵模式学院董事会 (自动化)Master自动故障转移
集群模式艺术联盟 (分布式)写性能扩展 + 高可用

http://www.xdnf.cn/news/20219.html

相关文章:

  • 2025高教社数学建模国赛A题 - 烟幕干扰弹的投放策略(完整参考论文)
  • 【Tailwind, Daisyui】响应式表格 responsive table
  • 一文教您学会Ubuntu安装Pycharm
  • 管家婆分销ERP A/V系列导出提示加载数据过大的处理方式
  • 【Python基础】 17 Rust 与 Python 运算符对比学习笔记
  • k8s除了主server服务器可正常使用kubectl命令,其他节点不能使用原因,以及如何在其他k8s节点正常使用kubectl命令??
  • 人工智能机器学习——聚类
  • 2025 汽车租赁大会:九识智能以“租赁+运力”革新城市智能配送
  • 指定端口-SSH连接的目标(告别 22 端口暴力破解)
  • 结构体简介
  • window cmd 命令行中指定代理
  • 对于单链表相关经典算法题:203. 移除链表元素的解析
  • 数据结构:栈和队列力扣算法题
  • 空域属不属于自然资源?(GPT5)
  • Redis-事务与管道
  • 使用CI/CD部署后端项目(gin)
  • 因泰立科技:用激光雷达重塑智能工厂物流生态
  • 【网安基础】--ip地址与子网掩码
  • 告别线缆束缚!AirDroid Cast 多端投屏,让分享更自由
  • 编写后端JAR包蓝绿发布脚本
  • 23种设计模式——代理模式(Proxy Pattern)详解
  • 【使用goto统计输入数的奇偶数量】2022-10-28
  • 人工智能时代职能科室降本增效KPI设定全流程与思路考察
  • 【高分论文密码】大尺度空间模拟与不确定性分析及数字制图技术应用
  • 为什么动态视频业务内容不可以被CDN静态缓存?
  • [ubuntu][C++]onnxruntime安装cpu版本后测试代码
  • 扫描件、PDF、图片都能比对!让文档差异无所遁形
  • TDengine 时间函数 TODAY() 用户手册
  • Next.js 介绍:为什么选择它来构建你的下一个 Web 应用?
  • 开发环境 之 编辑器、编译器、IDE梳理