Redis-哨兵机制Sentinel

redis的主从复制模式下,一旦主节点出现了故障无法提供服务了,需要人工进行主从切换,同时大量的客户端需要被通知切换到新的主节点上,对于有了一定规模的应用来说,这种方案的延迟是无法接受的,于是redis2.8提供了Redis-Sentinel(哨兵)来解决这个问题.


目录

1.啥是哨兵节点:

2.redis数据节点:

3.哨兵节点集合:

4.人工干预处理流程:

5.哨兵节点监控处理及流程:


1.啥是哨兵节点:

哨兵节点是一个独立的redis-sentinel进程,是负责监控redis数据节点的节点.

2.redis数据节点:

主节点和从节点共同成为数据节点.

3.哨兵节点集合:

若干个哨兵节点(redis-sentinel)共同构成的集合.

哨兵节点个数设置:

哨兵节点在使用的时候,可以有一个,也可以使用多个,但一般不会只使用一个,而是若干个哨兵节点构成的集合.共同监控一组数据节点:

1. 是为了防止一个哨兵节点因误判或偶然性的网络问题等做出错误的相应,当多个哨兵节点共同监控,当出现问题时,多个哨兵节点都反馈,提高正确性.

2. 哨兵节点本身也可能出现问题.若哨兵节点只有一个,当这个哨兵节点挂了,后续redis主节点挂了,就无法进行自动恢复过程了.

4.人工干预处理流程:

当主节点出现问题不能提供服务时,

1>.程序员通过监控系统,发现redis主节点故障宕机了.先尝试重启主节点,看能否解决问题,

2>.若主节点问题暂时找不到,就选择一个从节点作为新的主节点(slaveof no one命令),然后修改剩余从节点,连接到新的主节点上(slaveof ip port命令).

3>.告知客户端(修改客户端配置),让客户端能够连接新的主节点,挂到这组机器上.

后续若主节点能正常启动了,就让其作为新的从节点,连接到主节点上.

这一系列操作,对机器来说,延时性是非常高的,手动完成这一系列操作后,至少要半个小时以上,这个过程中,一直无法进行写操作,是无法接受的;

还有,万一在人工操作的过程中,出现了错误操作,可能带来更严重的问题,这都是不可预防的.

于是就更需要引入哨兵机制,通过自动化的方式,让程序对主节点挂了做出处理.

若是从节点挂了,影响不是很大,读写操作都还能正常进行;若是主节点挂了,redis哨兵节点就需要进行处理了.

5.哨兵节点监控处理及流程:

使用多个哨兵节点(计数个),通过建立tcp长连接(定期发送心跳包),一起监控redis数据节点(主,从节点).

1>.监控: 哨兵节点通过监控发现主节点出现问题时,不会立即做出处理,而是向其他哨兵节点确认,多数节点都发现该节点出现故障,就进行处理操作.

这步主要是防⽌该情况:出故障的不是主节点,⽽是发现故障的哨兵节点,该情况经常发⽣于哨兵节点的⽹络被孤⽴的场景下.

2>.监控到主节点出现故障后,从哨兵节点集群中选出一个leader来处理故障转移.

3>.故障转移: leader哨兵节点从 从节点中选出一个作为主节点,让其他从节点同步新主节点

4>.通知: 哨兵节点通知应⽤层客户端程序,让其转移到新主节点。后续客户端进行读写操作就会针对新的主节点操作了.

redis哨兵的核心功能:

1.监控;

2.自动故障转移

3.通知

哨兵节点的个数:

最好设置成计数个(3个刚好), 这和leader的选举有关和一些别的原因,后续会再细说.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java 阻塞队列:7种类型全解析

在 Java 中,阻塞队列(BlockingQueue) 是一种线程安全的队列结构,用于实现生产者-消费者模式。它的核心特性是在队列为空时阻塞消费者线程,在队列满时阻塞生产者线程,从而自动协调线程之间的协作。阻塞队列的…

word中的单位详解

Word中的单位转换全面指南 一、Word中支持的单位类型及转换关系 1. 常用单位类型 磅(pt):国际通用排版单位,1磅 ≈ 0.03527厘米,1厘米 ≈ 28.35磅。厘米(cm):公制单位,1厘…

stm32--SPI原理应用W25Q64(二)

目录 一 概述 二 W25Q64的介绍 简介 硬件样子 主要特性 常用 SPI 指令 三 代码部分 前言 SPI.c 新加代码第一部分: 新加代码第二部分: 新加代码第三部分: 新加代码第四部分: 新加代码第五部分(读&#xf…

关于 c、c#、c++ 三者区别

1. 起源与定位 语言起源时间开发者定位/特点C1972年Dennis Ritchie面向过程的编程语言,强调底层控制与高效性能C1983年Bjarne Stroustrup在 C 的基础上加入 面向对象编程(OOP)C#2000年微软(Microsoft)类似 Java&#…

7.7晚自习作业

实操作业02:Spark核心开发 作业说明 请严格按照步骤操作,并将最终结果文件(命名为:sparkcore_result.txt)于20点前上传。结果文件需包含每一步的关键命令执行结果文本输出。 一、数据读取与转换操作 上传账户数据$…

剑指offer第2版:动态规划+记忆化搜索

前三题是同一种模型,所以我分别用递推、记忆化、动归来做 一、p74-JZ10 斐波那契数列 斐波那契数列_牛客题霸_牛客网 class Solution { public:int Fibonacci(int n) {// write code hereif(n1||n2) return 1;int a1,b1,c1;while(n>2){cab;ab;bc;--n;}return c…

爬虫的笔记整理

网络爬虫首先要认识http和https协议 在浏览器中发送一个http请求: 1.输入一个URL地址之后,向http服务器发送请求,主要分为GET和POST两种方法 2.输入URL之后,发送一个request请求,这时候服务器把response文件对象发送…

Win11 安装 Visual Studio(保姆教程 - 更新至2025.07)

Visual Studio 安装(保姆教程 - 更新至2025.07) 前言安装须知安装过程1. 下载安装包2. 安装3. 注册4. 创建桌面快捷方式 前言 本教程针对 非计算机相关专业的小白用户 ,手把手教你如何基于 win11 操作系统 安装 Visual Studio 2022。安装搭载…

【Linux网络编程】Socket - UDP

目录 V1版本 - Echo Server 初始化服务器 启动服务器 客户端 本地测试 网络测试 优化代码 V2版本 - Dict Server 服务器的调整 字典 网络模块与业务模块耦合 V3版本 - 简单聊天室 简单聊天室概述 消息转发模块 数据接收模块 重定向观察 补充细节 在这一篇文章…

【STM32】通用定时器PWM

STM32 通用定时器 PWM 输出完全解析(以 TIM3_CH1 为例) PWM 输出基本原理 PWM(Pulse Width Modulation)即脉冲宽度调制,是由定时器通过比较 CNT 与 CCR 寄存器实现的。 信号产生原理: ARR 决定周期&#…

重塑数学边界:人工智能如何引领数学研究的新纪元

目录 一、人工智能如何重新定义数学研究的边界 (一)数学与AI的关系:从基础理论到创新思维的回馈 (二)AI的创造力:突破传统推理的局限 (三)AI对数学研究的潜在贡献:创…

eNSP中实现vlan间路由通信(路由器)

eNSP中实现vlan间路由通信(路由器) 拓扑图 PC配置 pc1:192.168.10.1255.255.255.0192.168.10.254pc2:192.168.20.1255.255.255.0192.168.20.254pc3: 192.168.10.2255.255.255.0192.168.10.254pc4:192.168.20.2255.25…