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

Redis哨兵:从看门狗到导盲犬的进化史

各位在分布式世界摸爬滚打的铲屎官们!今天我们要给Redis主从架构装上智能项圈——哨兵系统!这货从1.0时代的看门狗(只会叫不干活),进化到现在的导盲犬(主动带路+危机处理),堪称《Redisの变形记》!系好安全带,准备围观高可用架构的诞生现场! 🐕🦺


第一幕:哨兵の职场简历

岗位职责

  1. 24小时盯梢:监控主从节点心跳(比女朋友查岗还勤快)
  2. 故障诊断:发现主节点扑街时,秒变兽医判断是否真死(网络抖动?还是真宕机?)
  3. 自动换届:扶持新主节点上位(比宫斗剧还刺激)
  4. 服务发现:告诉客户端该抱谁大腿(主节点IP变化时的指路明灯)

技能要求

  • 至少3个哨兵组成陪审团(防止误判)
  • 奇数天团配置(3/5/7个,避免投票平局)
  • 能承受网络分区的毒打(脑裂?不存在的!)

第二幕:哨兵集群の出生证明

redis-sentinel.conf の灵魂配置

sentinel monitor mymaster 192.168.1.100 6379 2  # 监控名为mymaster的主节点,2票同意才算真宕机  
sentinel down-after-milliseconds mymaster 5000  # 5秒无响应就亮红灯  
sentinel failover-timeout mymaster 180000       # 换届选举限时3分钟  
sentinel parallel-syncs mymaster 1              # 新主上位时,每次同步1个从节点(防流量洪灾)  

避坑指南

  1. 所有哨兵必须监控同一个主节点(别各自认爹)
  2. 投票数quorum要 ≤ 哨兵总数/2 +1(比如3哨兵配2票)
  3. 生产环境至少3台物理机部署哨兵(防止被团灭)

第三幕:SpringBootの哨兵婚介所

application.yml の爱情契约

spring:  redis:  sentinel:  master: mymaster         # 主节点名称(别写成mymother)  nodes:  - 192.168.1.101:26379  # 哨兵1  - 192.168.1.102:26379  # 哨兵2  - 192.168.1.103:26379  # 哨兵3  password: 你的密码不是root吧?  lettuce:  pool:  max-active: 16         # 连接池要像海底捞等位区一样充足  

代码の山盟海誓

@Bean  
public RedisConnectionFactory lettuceConnectionFactory() {  RedisSentinelConfiguration config = new RedisSentinelConfiguration()  .master("mymaster")  .sentinel("192.168.1.101", 26379)  .sentinel("192.168.1.102", 26379)  .sentinel("192.168.1.103", 26379);  config.setPassword(RedisPassword.of("你的密码"));  return new LettuceConnectionFactory(config);  
}  

第四幕:哨兵の翻车名场面

惨案1:网络抖动引发的冤假错案

[ERR] +vote-for-leader 哨兵A疯狂弹劾主节点  
[WARN] 主节点实际存活,但因网络波动被误判死亡  

保命方案

  • 调大down-after-milliseconds(建议≥5000ms)
  • 给哨兵和Redis节点配置VIP心跳线

惨案2:脑裂の量子纠缠

主节点A和主节点B同时宣称:"我才是正宫!"  
客户端数据写入分裂,引发《双主の时空混乱》  

应急预案

  1. 手动下线其中一个主节点
  2. 配置min-slaves-to-write 1(至少1个从节点同步成功才接受写)

惨案3:哨兵集群集体失忆

所有哨兵突然忘记监控配置,开始摆烂  

复活咒语

  1. 重启哨兵并检查配置文件权限
  2. sentinel set命令动态修复配置

第五幕:哨兵の健康体检表

1. 哨兵自检命令

redis-cli -h 哨兵IP -p 26379 info sentinel  
# 输出示例:  
# master0:name=mymaster,status=ok,address=192.168.1.100:6379,slaves=2,sentinels=3  

2. 监控告警指标

  • 哨兵存活数(<3时触发警报)
  • 主从切换次数(突然飙升可能有问题)
  • 主节点响应时间(>100ms要亮黄灯)

3. 灾难演习方案

# 手动制造主节点宕机(勇士行为)  
redis-cli -h 主节点IP debug segfault  
# 观察哨兵是否在30秒内完成新主选举  

终极大招:哨兵到集群の飞升指南

当出现以下症状时,请考虑升级Redis Cluster:

  1. 数据量超过50GB(哨兵:我记不住这么多啊!)
  2. 写并发超过10万/秒(哨兵:主节点要炸了!)
  3. 需要自动分片(哨兵:这题超纲了!)

最后送上高可用の宇宙真理:
哨兵不是银弹!网络分区时请拥抱CP系统!
(想同时要CA?醒醒,分布式系统没有魔法!)

现在你已获得"Redis哨兵驯兽师"资格证书!要不要挑战用哨兵+Keepalived实现异地多活?(然后发现延迟让人怀疑人生)

相关文章:

Redis哨兵:从看门狗到导盲犬的进化史

各位在分布式世界摸爬滚打的铲屎官们!今天我们要给Redis主从架构装上智能项圈——哨兵系统!这货从1.0时代的看门狗(只会叫不干活),进化到现在的导盲犬(主动带路危机处理),堪称《Redi…...

Ubuntu从源代码编译安装QT

1. 下载源码 wget https://download.qt.io/official_releases/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz tar xf qt-everywhere-src-5.15.2.tar.xz cd qt-everywhere-src-5.15.22. 安装依赖库 sudo apt update sudo apt install build-essential libgl1-mesa-d…...

多线程到底重不重要?

我们先说一下为什么要讲多线程和高并发? 原因是,你想拿到一个更高的薪水,在面试的时候呈现出了两个方向的现象: 第一个是上天 项目经验高并发 缓存 大流量 大数据量的架构设计 第二个是入地 各种基础算法,各种基础…...

X86 RouterOS 7.18 设置笔记七:不使用Upnp的映射方法

X86 j4125 4网口小主机折腾笔记五:PVE安装ROS RouterOS X86 RouterOS 7.18 设置笔记一:基础设置 X86 RouterOS 7.18 设置笔记二:网络基础设置(IPV4) X86 RouterOS 7.18 设置笔记三:防火墙设置(IPV4) X86 RouterOS 7.18 设置笔记四…...

redis删除与先判断再删除的区别

在Redis中,“先判断存在再删除”与“直接删除”的区别主要体现在‌操作效率、原子性保障、并发安全性‌三个方面,具体对比如下: ‌1. 操作效率‌ ‌直接删除‌:仅需执行DEL命令一次,无论键是否存在均直接操作&#xf…...

数字隔离器,如何提升储能系统的安全与效能?

随着全球对光伏、风电等可再生能源需求的持续增长,在全球能源转型的浪潮中,储能技术凭借着可平衡能源供需、提高能源利用效率等优势,已成为实现 “双碳” 目标的核心支撑。据国家能源局公布数据显示,截至2024年底,我国…...

基于UniApp + Vue3开发的智能汉字转拼音工具

基于UniApp Vue3开发的智能汉字转拼音工具 项目简介 这是一个基于 UniApp Vue3 开发的智能汉字转拼音工具,前端使用 Vue3 构建界面,后端采用 Classic ASP 提供接口支持,通过 pinyin-pro 库实现精准的中文转拼音功能。本工具支持以下特性&…...

Python 科学计算与机器学习入门:NumPy + Scikit-Learn 实战指南

Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

10 | 基于 Gin 实现 HTTP 服务器

提示: 所有体系课见专栏:Go 项目开发极速入门实战课;欢迎加入 云原生 AI 实战 星球,12 高质量体系课、20 高质量实战项目助你在 AI 时代建立技术竞争力(聚焦于 Go、云原生、AI Infra);本节课最终…...

PyTorch 深度学习实战(14):Deep Deterministic Policy Gradient (DDPG) 算法

在上一篇文章中,我们介绍了 Proximal Policy Optimization (PPO) 算法,并使用它解决了 CartPole 问题。本文将深入探讨 Deep Deterministic Policy Gradient (DDPG) 算法,这是一种用于连续动作空间的强化学习算法。我们将使用 PyTorch 实现 D…...

Ubuntu conda虚拟环境不同设备之间迁移

Ubuntu conda环境迁移(conda-pack) 方法一:压缩拷贝方法二:conda-pack 在一台电脑配置好conda虚拟环境后,若在其它电脑需要同样的环境,可通过如下两种方式进行迁移。 方法一:压缩拷贝 找到Ubu…...

Docker根目录迁移与滚动日志设置

问题 最近使用docker手动导入离线镜像,总是出现,如下问题: no space left on the device 简单来说,就是docker根目录满了。 解决 查询当前docker info设置位置 使用如下命令,查询docker根目录位置: do…...

【JVM】GC 常见问题

GC 常见问题 哪些情况新生代会进入老年代 新生代 GC 后幸存区(survivor)不够存放存活下来的对象,会通过内存担保机制晋升到老年代。大对象直接进入老年代,因为大对象再新生代之间来会复制会影响 GC 性能。由 -XX:PretenureSizeT…...

「Unity3D」UGUI运行时设置元素的锚点Anchor,维持元素Rect的显示不变,即待在原处

在编辑器中,通过设置Raw edit mode,可以切换两种,元素锚点的改变模式: 一种是锚点单独改变,即:不开启原始模式,保持原样,改变anchoredPosition与sizeDelta。一种是锚点联动显示&…...

Angular由一个bug说起之十四:SCSS @import 警告与解决⽅案

SCSS import 警告与解决⽅案 ⚠ 警告信息 在 SCSS 中,使⽤ import 可能会产⽣以下警告: Deprecation Warning: Sass import rules are deprecated and will be removed in Dart Sass 3.0.0. ? 为什么会有这个警告? Sass 官⽅已经废弃 imp…...

PyTorch系列教程:基于LSTM构建情感分析模型

情感分析是一种强大的自然语言处理(NLP)技术,用于确定文本背后的情绪基调。它常用于理解客户对产品或服务的意见和反馈。本文将介绍如何使用PyTorch和长短期记忆网络(LSTMs)创建一个情感分析管道,LSTMs在处…...

SEO新手基础优化三步法

内容概要 在网站优化的初始阶段,新手常因缺乏系统性认知而陷入技术细节的误区。本文以“三步法”为核心框架,系统梳理从关键词定位到内容布局、再到外链构建的完整优化链路。通过拆解搜索引擎工作原理,重点阐明基础操作中容易被忽视的底层逻…...

Tcp网络通信的基本流程梳理

先来一张经典的流程图 接下介绍一下大概流程,各个函数的参数大家自己去了解加深一下印象 服务端流程 1.创建套接字:使用 socket 函数创建一个套接字,这个套接字后续会被用于监听客户端的连接请求。 需要注意的是,服务端一般有俩…...

PHP函数缺陷详解

无问社区-官网:http://www.wwlib.cn 本期无人投稿,欢迎大家投稿,投稿可获得无问社区AI大模型的使用红包哦! 无问社区:网安文章沉浸式免费看! 无问AI大模型不懂的问题随意问! 全网网安资源智…...

解决 Redis 后台持久化失败的问题:内存不足导致 fork 失败

文章目录 解决 Redis 后台持久化失败的问题:内存不足导致 fork 失败问题背景与成因解决方案修改内核参数 vm.overcommit_memory增加系统内存或 Swap 空间调整 Redis 配置 stop-writes-on-bgsave-error 在 Docker 环境中的注意事项总结 解决 Redis 后台持久化失败的问…...

深度学习GRU模型原理

一、介绍 门控循环单元(Gated Recurrent Unit, GRU) 是一种改进的循环神经网络(RNN),专为解决传统RNN的长期依赖问题(梯度消失/爆炸)而设计。其核心是通过门控机制动态控制信息的流动。与LSTM相…...

网络空间安全(31)安全巡检

一、定义与目的 定义: 安全巡检是指由专业人员或特定部门负责,对各类设施、设备、环境等进行全面或重点检查,及时发现潜在的安全隐患或问题。 目的: 预防事故发生:通过定期的安全巡检,及时发现并解决潜在的…...

基于Python+SQLite实现(Web)验室设备管理系统

实验室设备管理系统 应用背景 为方便实验室进行设备管理,某大学拟开发实验室设备管理系统 来管理所有实验室里的各种设备。系统可实现管理员登录,查看现有的所有设备, 增加设备等功能。 开发环境 Mac OSPyCharm IDEPython3Flask&#xff…...

面试系列|蚂蚁金服技术面【2】

今天继续分享一下蚂蚁金服的 Java 后端开发岗位真实社招面经,复盘面试过程中踩过的坑,整理面试过程中提到的知识点,希望能给正在准备面试的你一些参考和启发,希望对你有帮助,愿你能够获得心仪的 offer ! 第一轮面试完…...

【JavaEE】网络原理之初识

1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…...

WorkTool 技术解析:企业微信自动化办公的合规实现方案

引言:企业微信生态中的自动化需求 随着企业微信用户规模突破4亿(据腾讯2023年财报),其开放生态催生了自动化办公的技术需求。传统RPA(机器人流程自动化)工具在PC端已广泛应用,但移动端自动化仍…...

从0到1构建AI深度学习视频分析系统--基于YOLO 目标检测的动作序列检查系统:(2)消息队列与消息中间件

文章大纲 原始视频队列Python 内存视频缓存优化方案(4GB 以内)一、核心参数设计二、内存管理实现三、性能优化策略四、内存占用验证五、高级优化技巧六、部署建议检测结果队列YOLO检测结果队列技术方案一、技术选型矩阵二、核心实现代码三、性能优化策略四、可视化方案对比五…...

一文讲通锁标记对象std::adopt_lock盲点

一文讲通锁标记对象std::adopt_lock盲点 1. 核心概念2. 代码详解1. 单个锁2. 多重锁(可以用来预防死锁)3. 条件变量的互斥控制4. 复杂示例: 多生产者-多消费者模型(超纲了, 可不看,哈哈哈哈) 3. 小结 1. 核心概念 在C中, std::adopt_lock是一…...

Vscode工具开发Vue+ts项目时vue文件ts语法报错-红波浪线等

Vscode工具开发Vuets项目时vue文件ts语法报错-红波浪线等 解决方案 问题如题描述,主要原因是开发工具使用的代码检查与项目的中的ts不一致导导致,解决办法,修改 vscode 中, 快捷键:command shift p, 输入&#xff…...

Mac下安装Zed以及Zed对MCP(模型上下文协议)的支持

Zed是当前新流行的一种编辑器,支持MCP(模型上下文协议) Mac下安装Zed比较简单,直接有安装包,在这里: brew install --cask zedMac Monterey下是可以安装上的,亲测有效。 配置 使用CtrlShiftP…...