【Redis 进阶】哨兵模式

news2025/7/16 3:45:31

思维导图:


一、哨兵模式概述

(一)传统主从复制模式的局限性

在传统的Redis主从复制架构中,若主节点发生故障,运维人员需手动执行故障转移操作,将一个从节点提升为新主节点,并逐一通知所有客户端更新连接信息。然而,这种手动切换方式不仅效率低下,而且在高并发场景下容易引发数据不一致性问题。此外,随着企业规模的扩大,客户端数量增多,手动切换带来的运维成本和风险也显著增加。因此,Redis引入了哨兵(Sentinel)模式以提升系统的高可用性。

(二)哨兵模式的引入及优势

Redis哨兵模式通过引入哨兵节点,实现了对主从节点的自动监控和故障转移,极大地简化了运维工作并提高了系统的可用性。哨兵模式能够在主节点发生故障时自动选举新的主节点,并通知客户端更新连接信息,从而确保系统的持续稳定运行。此外,哨兵模式还支持配置动态调整和监控告警功能,为运维人员提供了更加便捷和高效的管理手段。


二、哨兵模式基本概念

(一)主节点与从节点
  • ​主节点​​:负责处理所有写操作,并将数据同步到从节点。
  • ​从节点​​:负责处理读操作,并从主节点同步数据。
(二)哨兵节点及其集合
  • ​哨兵节点​​:独立的进程,用于监控Redis主从节点的状态。
  • ​哨兵节点集合​​:由多个哨兵节点组成,防止单点故障。
(三)Redis哨兵整体架构

Redis哨兵模式包括主节点、从节点和哨兵节点集合。哨兵节点通过TCP长连接定期发送心跳包来监控主从节点的状态,并在检测到故障时自动执行故障转移操作。


三、哨兵模式工作机制

(一)监控机制

哨兵节点通过TCP长连接定期发送心跳包来监控主从节点的状态。如果某个哨兵节点在一定时间内未收到主节点的心跳响应,则会将其标记为主观下线。当多个哨兵节点同时标记主节点为主观下线时,会触发客观下线判定。

(二)自动故障转移流程
  1. ​主观下线判定​​:单个哨兵节点单方面认为主节点挂了,但可能也存在网络波动的关系。
  2. ​客观下线判定​​:多个哨兵节点共同确认主节点挂了,防止误判。
  3. ​Leader选举​​:多个哨兵节点选出Leader,负责执行故障转移操作。
  4. ​新主节点选举​​:从从节点中选出一个优先级最高、数据同步最多的节点作为新的主节点。
  5. ​配置更新​​:哨兵节点通知其他从节点和新主节点更新配置。
(三)客户端通知机制

哨兵节点会自动通知客户端程序新的主节点是谁,后续客户端的写入操作就会针对新的主节点进行了。这种机制确保了客户端能够及时感知主节点的变化并进行相应的调整。


四、哨兵节点集合的优势

(一)防止单点故障

哨兵节点集合由多个哨兵实例组成,这种冗余设计旨在防止单点故障。当某个哨兵节点因硬件故障或网络问题不可用时,其余哨兵节点仍能继续履行监控和管理职责,确保系统的稳定运行。

(二)降低误判概率

通过多个哨兵节点的共同确认,可以有效降低误判概率。传输过程中可能会出现丢包或网络抖动,单个哨兵节点的判断可能存在误差,但多个哨兵节点的共同确认可以提高判断的准确性。


五、Docker部署环境搭建

(一)Docker简介及优势

Docker是一种轻量级的容器化技术,通过操作系统级别的虚拟化实现资源的隔离和限制。与传统的虚拟机相比,Docker容器共享宿主操作系统内核,启动速度快,资源占用少,非常适合用于部署和扩展分布式应用。

(二)Docker准备工作
  1. 安装Docker和Docker Compose。
  2. 停止运行的Redis进程,防止冲突。
  3. 使用Docker获取Redis镜像。
(三)容器编排步骤详解
  1. ​创建Redis主从容器​​:
    • 使用Docker Compose定义一个YAML文件,指定主节点和从节点的配置参数。
    • 启动容器并验证主从复制是否正常工作。
  2. ​创建哨兵容器​​:
    • 定义另一个YAML文件,指定哨兵节点的配置参数。
    • 启动哨兵容器并验证其监控和管理功能。

六、哨兵重新选取主节点过程剖析

(一)主观下线与客观下线判定
  • ​主观下线​​:单个哨兵节点单方面认为主节点挂了,但可能也存在网络波动的关系。
  • ​客观下线​​:多个哨兵节点共同确认主节点挂了,防止误判。
(二)Leader选举机制
  1. 第一个发现客观下线的哨兵节点会投给自己一票,并向其他哨兵节点拉票。
  2. 其他哨兵节点接收到请求后,会投给它。如果出现多个同时拉票,那么谁快投谁,当其中一个哨兵节点的票数超过半数的时候,选举就完成了。
(三)新主节点选择策略
  1. ​优先级​​:每个从节点在配置文件中,都会有优先级的设置,优先级高的胜出。
  2. ​offset​​:如果不能区分,就看谁同步数据的多,多的胜出。
  3. ​run id​​:每个Redis启动时随机生成一串数字,谁越小,就挑选谁。

七、注意事项及最佳实践

(一)哨兵节点数量规划建议

哨兵节点的数量应根据实际业务需求和系统规模进行合理规划。通常建议部署奇数个哨兵节点,以便在发生故障时能够通过多数投票机制选出新的主节点。

(二)数据一致性与存储容量考量

哨兵+主从复制解决的是"可用性"问题,并不能解决在极端情况下的数据丢失问题。此外,哨兵+主从复制并不能提高数据的存储容量,数据的持久化和备份仍需通过其他手段实现。

(三)系统可用性保障措施
  1. 定期备份数据,确保在发生故障时能够快速恢复。
  2. 监控系统性能指标,及时发现和处理潜在问题。
  3. 进行容灾演练,验证系统的可靠性和稳定性。

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

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

相关文章

CVE-2025-31258 macOS远程视图服务沙箱逃逸漏洞PoC已公开

苹果公司近日针对macOS系统中新披露的CVE-2025-31258漏洞发布补丁,该漏洞可能允许恶意应用程序突破沙箱限制,获取未授权的系统资源访问权限。在安全研究员Seo Hyun-gyu公开概念验证(PoC)利用代码后,该漏洞已在macOS Se…

武汉大学无人机视角下的多目标指代理解新基准!RefDrone:无人机场景指代表达理解数据集

作者:Zhichao Sun, Yepeng Liu, Huachao Zhu, Yuliang Gu, Yuda Zou, Zelong Liu, Gui-Song Xia, Bo Du, Yongchao Xu 单位:武汉大学计算机学院 论文标题:RefDrone: A Challenging Benchmark for Drone Scene Referring Expression Compreh…

【递归、搜索和回溯】二叉树中的深搜

个人主页 : zxctscl 专栏 【C】、 【C语言】、 【Linux】、 【数据结构】、 【算法】 如有转载请先通知 文章目录 前言1 2331. 计算布尔二叉树的值1.1 分析1.2 代码 2 129. 求根节点到叶节点数字之和2.1 分析2.2 代码 3 814. 二叉树剪枝3.1 分析3.2 代码 4 98. 验证…

Algolia - Docsearch的申请配置安装【以踩坑解决版】

👨‍🎓博主简介 🏅CSDN博客专家   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入&#xff01…

Linux513 rsync本地传输 跨设备传输 一

ping节点bPing通 仅主机模式不需要设置网关节点a也可以Ping通节点b 同步成功 下载文件夹成功 今日源码 节点a 节点b

leetcode 383. Ransom Note

题目描述 代码 class Solution { public:bool canConstruct(string ransomNote, string magazine) {vector<int> table(26,0);for(char ch : magazine){table[ch-a];}for(char ch : ransomNote){table[ch-a]--;if(table[ch-a] < 0)return false;}return true;} };

Skyvern:用 AI+视觉驱动浏览器自动化

Skyvern&#xff1a;用 AI视觉驱动浏览器自动化 一、前言二、项目概览2.1 Skyvern 项目简介2.2 代码结构与模块划分 三、环境搭建与快速上手3.1 环境准备3.1.1 系统与依赖3.1.2 克隆项目3.1.3 安装 Python 依赖3.1.4 配置环境变量3.1.5 启动服务 3.2 验证安装 四、核心功能与实…

数据库原理期末考试速成--最后附带两套题

引言 为什么从3开始呢,毕竟是速成吗,总要放弃一些东西 前两章1.概论 2.关系数据库:这里面都是一些运算符什么的,我感觉都学这个:笛卡尔积之列的都会算 这两章比较重要的我就放在这里了 选择、投影、连接、除、并、交、差,其中选择、投影、并、差、笛卡尔积是5种基本关…

数据结构基础--蓝桥杯备考

1.优缺点总述 STL中各容器对比图 各类线性数据结构优缺点 1.数组 1.优点 1.简单&#xff0c;容易理解 2.访问快捷&#xff0c;只需要用下标就可以 3.有某些应用场景直接对应&#xff0c;例如二维数组对应平面 2.缺点 删除和插入数据非常耗时 2.链表 1.优点 插入和删…

2.4GHz无线通信芯片选型指南:集成SOC与低功耗方案解析

今天给大家分享几款2.4GHz无线通信芯片方案&#xff1a; 一、集成SOC芯片方案 XL2407P&#xff08;芯岭技术&#xff09; 集成射频收发机和微控制器&#xff08;如九齐NY8A054E&#xff09; 支持一对多组网和自动重传 发射功率8dBm&#xff0c;接收灵敏度-96.5dBm&#xff08…

Unity_JK框架【5】音效系统实现

在游戏开发中&#xff0c;音频是不可或缺的一部分&#xff0c;它能够极大地增强游戏的沉浸感和趣味性。今天&#xff0c;我们就用JK框架 探讨一下如何在Unity中实现一个强大的音频系统&#xff0c;并且通过实际的测试脚本来验证其功能&#x1f44f;。 一、音频模块类&#xff1…

鸿蒙 从打开一个新窗口到Stage模型的UIAbility组件

打开一个新的窗口 我们首先来实现如何在一个应用中打开一个新窗口&#xff0c;使用的模型是 Stage 模型 在项目文件里&#xff0c;新建一个 newWindow.ets 新文件 src/main/ets/pages/newWindow.ets newWindow.ets文件里面随便写点什么都行&#xff0c;这里是第一步创建的文件…

长短期记忆网络(LSTM)深度解析:理论、技术与应用全景

长短期记忆网络&#xff08;LSTM&#xff09;作为循环神经网络&#xff08;RNN&#xff09;的重要变体&#xff0c;通过门控机制有效解决了传统RNN的梯度消失问题&#xff0c;成为时序数据处理的核心技术。本文从理论起源、数学建模、网络架构、工程实现到行业应用&#xff0c;…

c语言第一个小游戏:贪吃蛇小游戏02

接上文继续学习 ncurse的上下左右键获取 想要使用ncurse的功能键&#xff0c;也就是键盘快捷键&#xff0c;不是q、r、t&#xff0c;是 上下左右、F1、F2等等的键&#xff0c;我们叫做功能键要是想用这些功能键需要使用keypad函数 Keypad(stdscr,1); 从stdscr接收标准中&…

Android架构之自定义native进程

在Android五层架构中&#xff0c;native层基本上全是c的世界&#xff0c;这些c进程基本上靠android世界的第一个进程init进程创建&#xff0c;init通过rc配置文件&#xff0c;创建了众多的c子进程&#xff0c;也是这众多的c进程&#xff0c;构建了整个android世界的native层。 …

《100天精通Python——基础篇 2025 第18天:正则表达式入门实战,解锁字符串处理的魔法力量》

目录 一、认识正则表达式二、正则表达式基本语法2.1 行界定符2.2 单词定界符2.3 字符类2.4 选择符2.5 范围符2.6 排除符2.7 限定符2.8 任意字符2.9 转义字符2.10 反斜杠2.11 小括号2.11.1 定义独立单元2.11.2 分组 2.12 反向引用2.13 特殊构造2.14 匹配模式 三、re模块3.1 comp…

Nuitka 已不再安全? Nuitka/Cython 打包应用逆向工具 -- pymodhook

pymodhook是一个记录任意对Python模块的调用的库&#xff0c;用于Python逆向分析。 pymodhook库类似于Android的xposed框架&#xff0c;但不仅能记录函数的调用参数和返回值&#xff0c;还能记录模块的类的任意方法调用&#xff0c;以及任意派生对象的访问&#xff0c;基于pyob…

【C】初阶数据结构14 -- 归并排序

本篇文章主要是讲解经典的排序算法 -- 归并排序 目录 1 递归版本的归并排序 1&#xff09; 算法思想 2&#xff09; 代码 3&#xff09; 时间复杂度与空间复杂度分析 &#xff08;1&#xff09; 时间复杂度 &#xff08;2&#xff09; 空间复杂度 2 迭代版本的归并…

华为网路设备学习-21 IGP路由专题-路由过滤(filter-policy)

一、路由过滤&#xff08;filter-policy&#xff09; 1、用于控制路由更新、接收的一个工具 2、只能过滤路由信息&#xff0c;无法过滤LSA 二、路由过滤&#xff08;filter-policy&#xff09;与动态路由协议 1、距离矢量路由协议 RIP动态路由协议 交换的是路由表&#xff0…

SAP 交货单行项目含税金额计算报cx_sy_zerodivide处理

业务背景&#xff1a;SAP交货单只有数量&#xff0c;没有金额&#xff0c;所以开发报表从订单的价格按数量计算交货单的金额。 用户反馈近期报表出现异常&#xff1a; ****2012/12/12 清风雅雨 规格变更 Chg 修改开始 ** 修改原因:由于余数为0时&#xff0c;可能会报错溢出。…