Java面试八股之Redis哨兵机制

news2024/11/27 13:43:22
  1. Redis哨兵机制

Redis Sentinel(哨兵)模式是一种高可用解决方案,用于监控和自动故障转移Redis主从集群。以下是对哨兵模式详细过程的描述:

1. 初始化与配置

部署哨兵节点:在不同的服务器上部署一个或多个Redis Sentinel节点,它们作为独立进程运行,负责监控Redis主从集群的状态。

配置监控:为每个哨兵节点配置要监控的主节点(以及其从节点),包括主节点的IP地址、端口、密码(如有)以及监控间隔等参数。

配置哨兵间通信:哨兵节点之间需要通过发布与订阅机制相互通信,以便共享状态信息、进行协商和达成共识。配置哨兵间的心跳检测间隔、通信频道等参数。

配置故障转移参数:设定故障转移所需的条件,如主观下线(SDOWN)和客观下线(ODOWN)的判定条件(如连续多少次心跳检测失败)、故障转移的最小投票数(quorum)、故障转移超时时间、从节点选择策略等。

2. 哨兵监控与心跳检测

周期性监控:每个哨兵节点定期向主节点和从节点发送INFO和PING命令,获取它们的状态信息(如角色、连接数、复制进度等)和确认节点存活。

主观下线(SDOWN):当哨兵节点连续多次无法与某个节点(通常是主节点)建立连接或收到响应时,它会将该节点标记为“主观下线”。此时,该哨兵认为主节点有问题,但尚未与其他哨兵达成一致意见。

3. 故障通知与协商

发送哨兵间消息:标记为主观下线的哨兵节点会向其他哨兵节点发送消息,告知其对主节点的判断。其他哨兵接收到消息后,也会独立地对主节点进行检测。

客观下线(ODOWN):当足够数量(超过配置的quorum)的哨兵都将主节点标记为SDOWN时,主节点被认定为“客观下线”。这意味着大部分哨兵都观察到了主节点的问题,形成了共识。

4. 主节点故障转移

选举领导者(Leader Sentinel):在确认主节点ODOWN后,哨兵节点间启动选举流程,通过Raft或其他类似共识算法选出一个领导者哨兵负责执行故障转移操作。领导者哨兵可能是最先标记主节点ODOWN的哨兵,也可能是在选举过程中获得多数投票的哨兵。

选择新主节点:领导者哨兵根据配置的从节点选择策略(如优先选择复制偏移量最大的从节点,表示数据最完整)从健康的从节点中选择一个作为新的主节点。

执行故障转移:领导者哨兵向选定的从节点发送SLAVEOF NO ONE命令,使其晋升为主节点。同时,通知其他从节点重新配置复制关系,开始从新主节点复制数据。

更新客户端配置:领导者哨兵更新配置,将原主节点的客户端重定向到新主节点,并通过发布哨兵配置变更消息,让其他哨兵和客户端知晓新的主从关系。

原主节点恢复(可选):当原主节点恢复在线时,哨兵会将其自动配置为新主节点的从节点,等待后续可能的手动或自动故障恢复。

5. 健康监测与自动修复

持续监控:哨兵节点持续监控整个Redis集群的状态,包括新主节点和从节点的健康状况。

故障自动修复:如果新的主从关系出现问题(如新主节点故障),哨兵会再次触发故障转移流程,选举新的主节点,确保集群的高可用性。

6. 客户端接入与通知

客户端连接:客户端(应用程序)可以通过哨兵提供的服务发现接口(如SENTINEL get-master-addr-by-name <master-name>)动态获取当前主节点的地址,实现自动连接到正确的主节点。

事件通知:哨兵支持向客户端发送故障转移等重要事件的通知,客户端可以根据这些通知进行相应的处理,如更新本地缓存、重连等。

综上所述,Redis Sentinel模式通过哨兵节点的监控、协商、故障转移等过程,实现了对Redis主从集群的自动化管理和高可用保障。当主节点出现故障时,哨兵能自动识别并触发故障转移,确保数据服务的连续性,同时降低了运维复杂性和人工干预成本。

 如果大家需要视频版本的讲解,欢迎关注我的B站:

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

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

相关文章

链表题目专题

19. 删除链表的倒数第 N 个结点 给定一个链表&#xff0c;删除链表的倒数第 n 个节点&#xff0c;并且返回链表的头结点。 非递归解决 这题让删除链表的倒数第n个节点&#xff0c;首先最容易想到的就是先求出链表的长度length&#xff0c;然后就可以找到要删除链表的前一个结…

Hyper-v创建二代虚拟机无法进入bios问题解决

首先要确定从dvd驱动在上面&#xff0c;如果不在则把它向上移动然后保存。 启动虚拟机会进入下面界面 然后点下最左边的按钮然后疯狂点击f2(有的电脑是fnf2) 就可以顺利进入bios引导界面。

手机拯救计划:掌握3个技巧,轻松找回通讯录联系人号码

手机通讯录是我们的“社交地图”&#xff0c;一旦失去联系&#xff0c;就仿佛置身于茫茫人海中&#xff0c;不知所措。而安卓手机用户们&#xff0c;更是对通讯录的依赖达到了前所未有的高度&#xff0c;当发现它们丢失了&#xff0c;很容易产生焦虑情绪。别急&#xff0c;通过…

ARM架构(一)—— ARMV8V9基础概念

目录 1.ARMCore的时间线2.ARM术语小结2.1 A64和arrch642.2ARM架构现在的5个系列2.3 微架构2.4 PE2.5 Banked2.6 ARM文档术语2.7 IMPLEMENTATION DEFINFD 和 DEPRECATED2.8 EL1t和EL1h 3 ARMv7的软件架构4 安全状态切换模型4.1 Secure state和Non-secure state介绍 5 Interproce…

数据类型与结构设计:Rust 语言的深度探索

数据类型与结构设计&#xff1a;Rust 语言的深度探索 引言&#xff1a;数据与结构的精妙交响Rust 数据类型概览&#xff1a;坚实的基础数据类型详解基本数据类型&#xff1a;构建程序的原子单元复合数据类型&#xff1a;构建复杂数据结构的积木与结构体和枚举的结合 结构体与枚…

layui table template、或toolbar实现超出隐藏、更多展示全部效果

使用Layui table时&#xff0c;经常会使用template、或toolbar自定义模版属性。当使用该属性自定义HTML时&#xff0c;layui table 单元格原有的文本超出省略号隐藏功能&#xff0c;在该单元格讲不会生效。 前言&#xff1a;首先我们先搞懂layui超出隐藏原理&#xff0c;table单…

PHP微信小程序视频图文流量主变现小程序系统源码

&#x1f4b0;微信小程序新机遇&#xff01;视频图文流量主变现秘籍&#x1f511; &#x1f680;【流量变现新风口】&#x1f680; 还在为微信小程序的庞大流量如何转化为真金白银而苦恼吗&#xff1f;今天&#xff0c;就带你揭秘“微信小程序视频图文流量主变现小程序”的神…

mysql group_concat()函数、行转列函数

文章目录 一、group_concat函数1.1、语法1.2、示例1.2.1、查询所有姓名&#xff0c;并显示在一行1.2.2、单列合并&#xff0c;指定冒号分隔符1.2.3、单列合并&#xff0c;去重1.2.4、多列拼接合并1.2.5、多列拼接合并&#xff0c;列和列之间指定分隔符 在mysql的关联查询或子查…

十、Java集合 ★ ✔【泛型、通配符、List、Set、TreeSet、自然排序和比较器排序、Collections、可变参数、Map】

day05 泛型,数据结构,List,Set 今日目标 泛型使用 数据结构 List Set 1 泛型 1.1 泛型的介绍 ★ 泛型是一种类型参数&#xff0c;专门用来保存类型用的 最早接触泛型是在ArrayList&#xff0c;这个E就是所谓的泛型了。使用ArrayList时&#xff0c;只要给E指定某一个类型…

【Linux系统】信号的产生

信号 关于信号举一些生活中的例子 --- 比如交通指示灯... - 信号在生活中&#xff0c;随时可以产生 --- 信号的产生和我们是异步的&#xff01;&#xff08;异步的意思就是信号的产生和我没有直接关系&#xff09; - 你能认识这个信号 --- 我们知道这是信号&#xff0c;我们才…

C语言基础and数据结构

C语言程序和程序设计概述 程序:可以连续执行的一条条指令的集合 开发过程:C源程序(.c文件) --> 目标程序(.obj二进制文件,目标文件) --> 可执行文件(.exe文件) -->结果 在任何机器上可以运行C源程序生成的 .exe 文件 没有安装C语言集成开发环境,不能编译C语言程…

AES Android IOS H5 加密方案

前景&#xff1a; 1、本项目原有功能RSA客户端对敏感信息进行加密 2、本次漏洞说是服务端返回值有敏感信息&#xff0c;需要密文返回 方案&#xff1a; 本次方案不算完美&#xff0c;还是有被劫持篡改的风险&#xff0c;但基本https证书认证加持&#xff0c;风险相对较小 …

中介者模式(行为型)

目录 一、前言 二、中介者模式 三、总结 一、前言 中介者模式&#xff08;Mediator Pattern&#xff09;是一种行为型设计模式&#xff0c;又成为调停者模式&#xff0c;用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地互相引用&#xff0c;从而使其耦合…

颈动脉血管壁分割通过领域对齐、拓扑学习和稀疏标注中的Segment Anything模型在磁共振图像中的应用。

Title 题目 Carotid Vessel Wall Segmentation ThroughDomain Aligner, Topological Learning, andSegment Anything Model for Sparse Annotationin MR Images 颈动脉血管壁分割通过领域对齐、拓扑学习和稀疏标注中的Segment Anything模型在磁共振图像中的应用 01 文献速递…

基于AT89C51单片机的16×16点阵LED显示器字符滚动显示设计(含文档、源码与proteus仿真,以及系统详细介绍)

本篇文章论述的是基于AT89C51单片机的1616点阵LED显示器字符滚动显示设计的详情介绍&#xff0c;如果对您有帮助的话&#xff0c;还请关注一下哦&#xff0c;如果有资源方面的需要可以联系我。 目录 仿真效果图 仿真图 代码 系统论文 资源下载 设计的内容和要求 熟悉51系…

C语言 ——— 大/小端存储模式的介绍及判断

目录 何为大端小端 如何测试当前机器是大端还是小端 编写代码&#xff0c;判断当前机器的字节序 何为大端小端 大端字节序存储模式&#xff1a;数据的低位字节的内容 存放在 内存的高地址 中&#xff0c;数据的高位字节的内容 保存在 内存的低地址 中 小端字节序存储模式&am…

台达DVP系列串口驱动全面解析

1 驱动简介 台达DVP系列PLC&#xff08;包括ES2、SS、EX等&#xff09;使用串口通讯&#xff0c;外部设备可通过此口采集与PLC进行数据交互。网关使用台达DVP系列驱动&#xff0c;按照下述过程操作即可实现网关与PLC直接通讯 默认串口参数&#xff1a;9600/7/偶/1。 串口号&…

支持前端路由权限和后端接口权限的企业管理系统模版

一、技术栈 前端&#xff1a;iview-admin vue 后端&#xff1a;springboot shiro 二、基于角色的权限控制 1、路由权限 即不同角色的路由访问控制 2、菜单权限 即不同角色的菜单列表展示 3、按钮权限 即不同角色的按钮展示 4、接口权限 即不同角色的接口访问控制 三…

SQLMC:一款高性能大规模SQL注入安全扫描工具

关于SQLMC SQLMC是一款功能强大的高性能SQL注入安全扫描工具&#xff0c;该工具作为Kali Linux官方内置工具的其中一个部分&#xff0c;可以帮助广大研究人员检测目标域名的所有URL节点是否存在SQL注入问题。 该工具基于纯Python开发&#xff0c;适用于红队和蓝队成员&#xf…

path模块和HTTP协议

一。path模块常用API ./相对路径&#xff0c;/绝对路径 二&#xff0c;HTTP协议 1.请求报文 1.请求行 URL的组成 2.请求头 3.请求体 可以是空&#xff1a;GET请求 可以是字符串&#xff0c;还可以是json&#xff1a;POST请求 2.响应报文 1.响应行 HTTP / 1.1 200 OK H…