news 2026/4/18 20:30:03

详解redis(3):哨兵

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
详解redis(3):哨兵

一、为什么需要 Redis Sentinel?

主从复制架构下,Redis 仍然存在一个问题:

主节点宕机后,没有自动切换能力

Redis Sentinel 的目标是:

在不引入复杂分片的前提下,为 Redis 提供“自动故障检测 + 自动主从切换 + 服务发现”能力

换句话说:

Sentinel =高可用控制平面
Redis 主从 =数据平面

二、Sentinel 是一个“分布式系统”

为什么 Sentinel 必须是分布式的

如果只有一个 Sentinel:

  • Sentinel 自己宕机 → 无法监控

  • Sentinel 网络异常 → 误判主节点

所以 Redis 设计为:

多个 Sentinel 进程协同工作

Sentinel本身不能有单点故障

三、Sentinel 的核心职责

监控(Monitoring)

Sentinel 定期向:

主节点

从节点

发送PING

判断:

是否存活

是否可达

是否响应正常

通知(Notification)

当 Sentinel 发现异常时,可以:

记录日志

发送告警(邮件 / webhook / 脚本)

通知运维系统

Sentinel不仅是自动系统,也是监控系统

故障转移管理(Failover)

这是 Sentinel最核心的能力

当:

主节点不可达

且达到法定数量(Quorum)

Sentinel 会:

确认主节点客观下线

选举一个 Sentinel 作为领导者

从副本中选一个新的主节点

重新配置其他副本

通知客户端新主节点地址

配置管理 / 服务发现

Sentinel 类似于:

Zookeeper

Consul

客户端:

不直接写死 Redis 主节点

启动时向 Sentinel 查询:

“当前主节点是谁?”

当主节点变化:

Sentinel 会告知客户端

客户端重新连接新主

四、故障判定:主观下线 vs 客观下线

主观下线(SDOWN)

单个 Sentinel 判断:

“我联系不上主节点”

可能原因:

网络抖动

Sentinel 自己异常

不立即触发故障转移

客观下线(ODOWN)

多个 Sentinel 达成一致

达到配置的Quorum

例如:

3 个 Sentinel

Quorum = 2

至少 2 个 Sentinel 认为主节点不可用

才会触发故障转移

五、Quorum(法定人数)到底是什么意思

Quorum 的作用是:

防止“误判”和“单点异常”

表格含义解释

Sentinel 数量Quorum可容忍失败数
321
532
743

含义:

只有多数 Sentinel 同意

才能判定主节点失效

少数派不能发起切换

六、一次完整的 Sentinel 故障转移流程

主节点不可达

多个 SentinelPING失败

达成 Quorum

主节点被标记为ODOWN

Sentinel 领导者选举

Sentinel 之间投票

选出一个Leader Sentinel

选择新的主节点

根据优先级:

在线的副本

复制偏移量最大(数据最新)

延迟低、配置优先级高

提升副本为主

向该副本发送:

SLAVEOF NO ONE

重配置其他副本

让其复制新主节点

通知客户端

Sentinel 更新主节点信息

客户端重新查询并连接新主

七、Sentinel 的局限性和真实风险

网络分区

最危险的问题

场景:

原主节点被网络隔离

Sentinel 多数派在另一侧

选出新主

旧主:

仍然接受写入

结果:

旧主上的写入最终会丢失

Redis 的态度是:

一致性让位于可用性(AP)

写丢失问题(不可避免)

原因:

Redis 复制是异步的

客户端可能仍在向“旧主”写

当客户端发现新主:

旧主写入的这段数据:

无法合并

直接丢弃

Sentinel 与客户端拓扑错位

如果:

Sentinel 认为主节点可达

客户端却连不上

产生“我认为你活着,但你用不了”的问题

八、如何减少数据丢失

强制写入至少一个副本

Redis 提供配置:

min-replicas-to-write 1 min-replicas-max-lag 10

含义:

至少有 1 个副本

延迟不超过 10 秒

否则主节点拒绝写入

可用性换一致性

启用持久化(RDB + AOF)

防止 Redis 进程级崩溃导致全丢

但:

不能解决脑裂写丢失

客户端正确使用 Sentinel

新连接前:

查询 Sentinel

写失败后:

重新发现主节点

不要缓存主节点地址过久

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:53:03

C++11的一些特性

1. 左值引用 vs 右值引用左值引用定义:给左值取别名,用 &表示。特点:能获取地址,有持久状态可出现在赋值符号左边或右边主要作用是减少拷贝,提高效率int a 10; int& ref_a a; // 左值引用 const int&…

作者头像 李华
网站建设 2026/4/18 16:18:24

通信原理篇---PAM与PCM

解释 PAM(脉冲幅度调制) 和 PCM(脉冲编码调制) 的区别。1. 基本概念PAM:模拟调制方式,用脉冲序列的幅度来模拟连续信号的瞬时值,仍然是模拟信号。PCM:数字调制方式,先对模…

作者头像 李华
网站建设 2026/4/18 18:23:39

Playwright数据库断言:测试前后数据验证

在自动化测试中,我们常常会遇到这样的场景:测试一个用户注册功能,接口返回了成功,但你真的确定用户数据正确写入数据库了吗?或者测试一个删除功能后,如何验证数据确实从数据库中移除了?这就是数…

作者头像 李华
网站建设 2026/4/18 12:05:17

> STM32-200-多功能门禁人脸识别指纹识别RFID刷卡密码(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

STM32-200-多功能门禁人脸识别指纹识别RFID刷卡密码(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码产品功能描述: 本系统由STM32F103C8T6单片机核心板、1.44寸TFT彩屏、(无线蓝牙/无线WIFI/无线视频监控…

作者头像 李华
网站建设 2026/4/18 12:42:19

51-C40-温湿度检测+上下限+加热+空调降温+加湿+除湿+手动+自动+OLED屏+声光报警+按键+(无线方式选择)(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

51-C40-温湿度检测上下限加热空调降温加湿除湿手动自动OLED屏声光报警按键(无线方式选择)51-C040B蓝牙无线-APP版: 51-C040W-WIFI无线-APP版: 51-C040CAN-视频监控WIFI无线-APP版: 产品功能描述: 本系统由51单片机最小系统电路、OLED屏、(无线蓝牙/无线W…

作者头像 李华
网站建设 2026/4/18 0:50:58

JavaWeb从入门到进阶(vue与Ajax Axios)

什么是Vue: Vue是一套前端框架,免除原生javaScript中的DOM操作,简化书写。 基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上本质区别:原生JS:你要告诉浏览器每一步怎么做…

作者头像 李华