Java面试八股之Redis哨兵机制

  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.rhkb.cn/news/378034.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode 周赛(406)全AC留念

纪念第一次 leetcode 周赛&#xff08;406&#xff09;全AC 1.(100352. 交换后字典序最小的字符串) 题目描述&#xff1a; 给你一个仅由数字组成的字符串 s&#xff0c;在最多交换一次 相邻 且具有相同 奇偶性 的数字后&#xff0c;返回可以得到的 字典序最小的字符串 。 如…

ubantu22.04安装OceanBase 数据库

1、管理员启动cmd,运行 sudo bash -c "$(curl -s https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/service/installer.sh)" 2、提示如下代表安装完成 3、修改数据库配置文件的密码 sudo vim /etc/oceanbase.cnf 然后保存退…

初学SpringMVC之 JSON 篇

JSON&#xff08;JavaScript Object Notation&#xff0c;JS 对象标记&#xff09;是一种轻量级的数据交换格式 采用完全独立于编程语言的文本格式来存储和表示数据 JSON 键值对是用来保存 JavaScript 对象的一种方式 比如&#xff1a;{"name": "张三"}…

Redis实战—附近商铺、用户签到、UV统计

本博客为个人学习笔记&#xff0c;学习网站与详细见&#xff1a;黑马程序员Redis入门到实战 P88 - P95 目录 附近商铺 数据导入 功能实现 用户签到 签到功能 连续签到统计 UV统计 附近商铺 利用Redis中的GEO数据结构实现附近商铺功能&#xff0c;常见命令如下图所示。…

牛客TOP101:合并两个排序的链表

文章目录 1. 题目描述2. 解题思路3. 代码实现 1. 题目描述 2. 解题思路 与正常的合并两个有序数组思路一样&#xff0c;这里可以定义一个头节点&#xff08;虚拟节点&#xff09;&#xff0c;可以方便我们一开始进行连接。用两个指针标记两个链表的结点&#xff0c;进行循环比较…

5.4 软件工程-系统设计

系统设计 - 概述 设计软件系统总体结构 数据结构及数据库设计 编写概要设计文档、评审 详细设计的基本任务 真题

FPGA 项目菜单功能比较

为了帮助您更好地理解每个FPGA功能模块的实用场合、区别和特点&#xff0c;以下是详细的比较&#xff1a; 功能模块实用场合区别特点FPGA I/O自动控制系统、数据采集系统直接与FPGA板卡上的物理端口交互&#xff0c;配置和使用外部I/O设备灵活配置输入输出端口&#xff0c;支持…

[Spring] Spring Web MVC案例实战

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

「Pytorch」roLabelImg 图像异常旋转 bug

在进行Yolo-obb 模型训练的时候需要标注旋转框&#xff0c;roLabelImg 是比较推荐的一款旋转框标注工具&#xff0c;既可以标注正常的矩形框&#xff0c;还可以标注旋转框 roLabelImg Github 地址&#xff1a;https://github.com/HumanSignal/labelImg 但是在使用过程中遇到了…

数据库管理-第218期 服务器内存(20240711)

数据库管理218期 2024-07-11 数据库管理-第218期 服务器内存&#xff08;20240711&#xff09;1 内存2 ECC内存3 原理3.1 多副本传输3.2 纠错码3.3 汉明码 总结 数据库管理-第218期 服务器内存&#xff08;20240711&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文…

利用OSMnx进行城市路网数据的速度与通行时间推算及分析

本文还是以广州市路网为例&#xff0c;通过osmmx调用ox.add_edge_speeds(G)时&#xff0c;该函数会遍历图G 中的每条边&#xff08;即每条街道&#xff09;&#xff0c;并基于一些预设的规则或街道属性&#xff08;如街道类型、是否为主要道路、是否有速度限制等&#xff09;来…

Logistic回归算法原理详解及应用

目录 引言 基本原理 损失函数 参数估计 优缺点 应用 Logistic回归优化算法 具体案例 引言 逻辑回归&#xff08;Logistic Regression&#xff09;是一种广泛用于分类问题的统计方法&#xff0c;尤其是二分类问题。尽管名字中有“回归”二字&#xff0c;但它实际上是一…

Vue3总结汇总(不间断更新)

一、常用依赖插件汇总 1.1 依赖 UI组件库:1、AntDesignVue2、ElementPlus 网络请求&#xff1a;axios 组件通信&#xff1a;mitt ID生成&#xff1a;nanoid 路由&#xff1a;vue-router 三维&#xff1a;cesium 构建工具:Vite vite-plugin-vue-setup-extend&#xff1a;简化set…

编译打包自己的云手机(redroid)镜像

前言 香橙派上跑云手机可以看之前的文章&#xff1a; 香橙派5plus上跑云手机方案一 redroid(带硬件加速)香橙派5plus上跑云手机方案二 waydroid 还有一个cuttlefish方案没说&#xff0c;后面再研究&#xff0c;cuttlefish的优势在于可以自定义内核且selinux是开启的&#xf…

推荐5个实用的可视化工具

面对海量的数据&#xff0c;我们应该如何高效地提取其价值&#xff0c;让复杂的信息一目了然&#xff1f;这正是可视化工具大显身手的舞台。今天&#xff0c;我就来分享几款非常好用的数据可视化工具&#xff0c;它们不仅能够帮助你轻松驾驭数据&#xff0c;还能让你的工作汇报…

HCIE是什么等级的证书?

HCIE&#xff08;华为认证互联网专家&#xff0c;Huawei Certified Internetwork Expert&#xff09;是华为认证体系中的最高等级证书。它要求考生具备在复杂网络环境中规划、设计、部署、运维和优化网络的能力。HCIE认证是华为认证体系中最具挑战性和含金量的认证之一&#xf…

鸿蒙语言基础类库:【@ohos.application.testRunner (TestRunner)】 测试

TestRunner TestRunner模块提供了框架测试的能力。包括准备单元测试环境、运行测试用例。 如果您想实现自己的单元测试框架&#xff0c;您必须继承这个类并覆盖它的所有方法。 说明&#xff1a; 开发前请熟悉鸿蒙开发指导文档&#xff1a;gitee.com/li-shizhen-skin/harmony-…

浪潮天启防火墙TQ2000远程配置方法SSL-V偏、L2xx 配置方法

前言 本次设置只针对配置V偏&#xff0c;其他防火墙配置不涉及。建议把防火墙内外网都调通后再进行V偏配置。 其他配置可参考&#xff1a;浪潮天启防火墙配置手册 配置SSLVxx 在外网端口开启SSLVxx信息 开启SSLVxx功能 1、勾选 “启用SSL-Vxx” 2、设置登录端口号&#xff0…

使用Apache服务部署静态网站

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 目录 一、网站服务程序 ​二、配置服务文件参数 ​三、SELinux安全子系统 四、个人用户主页功能 ​五、虚拟网站主机功能 六、Apache的访问控制…

CSA笔记1-基础知识和目录管理命令

[litonglocalhost ~]$ 是终端提示符&#xff0c;类似于Windows下的cmd的命令行 litong 当前系统登录的用户名 分隔符 localhost 当前机器名称&#xff0c;本地主机 ~ 当前用户的家目录 $ 表示当前用户为普通用户若为#则表示当前用户为超级管理员 su root 切换root权限…