Redis之哨兵模式解读
目录
基本介绍
单哨兵模式
多哨兵模式
哨兵的本质
配置哨兵模式
故障恢复原理
哨兵监控工作流程
哨兵模式缺点
基本介绍
当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。
Redis Sentinel(哨兵)是一个分布式系统,你可以在一个架构中运行多个哨兵(sentinel) 进程, 这些进程使用 gossip协议(基于流行病传播方式的节点或者进程之间信息交换的协议,在分布式系统中被广泛使用) 来接收关于Master是否下线的信息,并使用投票协议(agreement protocols) 来决定是否执行自动故障迁移,以及选择哪个 Slave 作为新的 Master (raft算法)
单哨兵模式
- 通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器
- 当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机
- 然而一个哨兵进程对Redis服务器进行监控,可能会出现问题(比如哨兵死了),为此,我们可以使用多个哨兵进行监控。 各个哨兵之间还会进行监控,这样就形成了多哨兵模式
多哨兵模式
- 假设主服务器宕机,哨兵1先检测到这个结果,系统并不会马上进行failover过程,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为主观下线。
- 当后面的哨兵也检测到主服务器不可用,并且数量达到一 定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover[故障转移]操作。
- 切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线
主观下线(sdown)
1、sdown(主观不可用)是单个哨兵自己主观上检测到的关于master的状态,从哨兵的角度来看,如果发送PING心跳后,在一定的时间内没有得到合法的回复,就达到了sdown的条件。
2、哨兵配置文件中down-after-milliseconds设置了判断主观下线的回复时间。
客观下线需要一定数量的哨兵,多个哨兵达成一致意见才能认为一个master客观上已经宕机了。
哨兵的本质
哨兵其实也是一台 Redis 服务器,只是不对外提供任何服务。稍后我们在配置时,你会看到实际上哨兵只是一个运行在特殊模式下的 Redis 服务器,你可以在启动一个普通 Redis 服务器时通过给定
--sentinel选项来启动哨兵。
配置哨兵模式
这里只对关键点进行概述,具体可查阅其他资料
自定义目录下新建sentinel.conf文件,名字绝不能错
# sentinel monitor 被监控的名称 host port 1
# 其中mymaster为监控对象起的服务器名称,1 为至少有多少个哨兵同意迁移的数量。
sentinel monitor mymaster 127.0.0.1 6379 1
启动哨兵
# redis-sentinel sentinel.conf
故障恢复原理
- 新主登机:从下线的主服务器的所有从服务里面挑选一个从服务,将其转成主服务,选择条件依次是:选择优先级靠前的(优先级在redis.conf中默认:slave-priority 100,值越小优先级越高)选择偏移量最大的(是指获得原主机数据最全的)
- 群仆俯首:挑选出新的主服务之后sentinel向原主服务的从服务发送slaveof新主服务的命令,复制新master
- 旧主俯首:当已下线的服务重新上线时,sentinel会向其发送slaveof命令,让其成为新主的从
哨兵监控工作流程
- 哨兵启动后根据配置向master发送info指令,获取并保存所有哨兵状态,主节点和从节点信息。
- 主节点master会记录所有从节点和与它连接的哨兵实例的信息。
- 哨兵会根据在主节点拿到的从节点信息,给对应的从节点建立连接后发送info指令
- 之后哨兵2来了也是给master发送info指令,同时拿到了从节点和哨兵的实例信息
- 此时哨兵2也会保存跟哨兵1一样的信息,只不过它保存的哨兵信息是2个
- 这个时候为了每个哨兵的信息都一致它们之间建立了一个发布订阅,互相发送 ping 命令 保证信息长期对称
- 当再来一个哨兵3时,也会做同样的事情,给主节点和从节点发送info,并且跟哨兵1和哨兵2建立连接
哨兵模式缺点
哨兵模式的缺点包括:
- 延迟问题: 由于哨兵需要进行频繁的状态检查和转移操作,可能会对系统带来一定的延迟。
- 复杂性增加:引入哨兵模式后,需要对集群进行额外的配置和管理,复杂度会增加。
相关文章:
Redis之哨兵模式解读
目录 基本介绍 单哨兵模式 多哨兵模式 哨兵的本质 配置哨兵模式 故障恢复原理 哨兵监控工作流程 哨兵模式缺点 基本介绍 当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多…...
题目:2644.找出可整除性得分最大的整数
题目来源: leetcode题目,网址:2644. 找出可整除性得分最大的整数 - 力扣(LeetCode) 解题思路: 遍历计算即可。 解题代码: class Solution {public int maxDivScore(int[] nums, int[] di…...
报错:axios 发送的接口请求 404
axios 发送的接口请求 404 一、问题二、分析 一、问题 二、分析 axios 发送的接口请求 404,根本没有把接口信息发送到后端,这个时候你可以查看检查一下自己的接口名字,或让后端配合换一个接口名字再发送一次接口请求...
三年前端还不会配置Nginx?刷完这篇就够了
什么是Nginx Nginx是一个开源的高性能HTTP和反向代理服务器。它可以用于处理静态资源、负载均衡、反向代理和缓存等任务。Nginx被广泛用于构建高可用性、高性能的Web应用程序和网站。它具有低内存消耗、高并发能力和良好的稳定性,因此在互联网领域非常受欢迎。 为…...
blender 场景灯光基础设置
在 blender 中,打光分为两个部分,一个是世界光,一个是场景光; 世界光: 世界光:在 Blender 中,世界光指的是用于设置场景整体照明的环境光。它可以通过调整颜色、强度、阴影等参数来影响场景的…...
如何查看 SQLyog 中数据库连接信息中的密码
SQLyog 数据库连接信息中的密码无法选择明文展示,也无法复制 可以将数据库连接信息导出到文本查看明文密码 工具--》导入/导出连接详情:...
【SpringSecurity】八、集成图片验证码
文章目录 1、生成图片验证码2、创建验证码过滤器3、将过滤器加入SpringSecurity过滤链4、修改登录页 SpringSecurity是通过过滤器链来完成的,接下来的验证码,可以尝试创建一个过滤器放到Security的过滤器链中,在自定义的过滤器中比较验证码。…...
【本地代码问题】启动程序,报错:java.lang.IllegalArgumentException: No selectors
启动程序的时候报错了 问题怎么出现的解决方式,注释掉jetty的内容,回归tomcat的使用 问题怎么出现的 我本地启动程序的时候报错了:报的是这个错误,可能和容器的选择有关吧 解决方式,注释掉jetty的内容,回…...
手写RPC框架--4.服务注册
RPC框架-Gitee代码(麻烦点个Starred, 支持一下吧) RPC框架-GitHub代码(麻烦点个Starred, 支持一下吧) 服务注册 服务注册a.添加服务节点和主机节点b.抽象注册中心c.本地服务列表 服务注册 a.添加服务节点和主机节点 主要完成服务注册和发现的功能,其具体流程如下&…...
oracle 解锁表
操作的前提 用 sys 用户 以 SYSDBA 角色登录 第一种解锁方式 1.查询被锁的表 select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objects o ,v$session s where l.object_id o.object_id and l.session_ids.sid;2.查询那个session引起表被锁 sele…...
使用Dbeaver连接GaussDB
1.下载DBeaver,官网地址 2.安装软件,打开软件,点击数据库->驱动管理器,具体操作如下图: 3、选择新建后进行参数设置,如下图: 具体参数如下图 驱动名称: GS #随便定义 驱动类型&#…...
WSL使用技巧 / 虚拟机对比
WSL使用技巧 / 虚拟机对比 前言虚拟机比较VMware使用技巧WSL使用技巧官方文档工具安装WSL基本命令运行命令关闭卸载磁盘管理导入导出指定安装路径 前言 本文介绍了VMware和WSL的区别,并详细介绍了WSL的使用方法和技巧。 虚拟机比较 VMware 比较灵活,拥…...
vuex_cart案例
json-server使用 在目录下新建db文件夹>里面新建index.json index.json {"cart": [{"id": 100001,"name": "低帮城市休闲户外鞋天然牛皮COOLMAX纤维","price": 128,"count": 6,"thumb": "http…...
Linux系统的安装
文章目录 1 Linux介绍1.1 Linux是什么1.2 Linux的特点1.3 Linux的应用1.4 Linux的发行版本1.5 Linux的Shell 2 Linux安装2.1 安装方式2.2 什么是VMware2.3 VMware主要功能2.4 什么是CentOS2.5 VMware与CentOS与Linux的关系2.6 VMware安装CentOS的步骤 1 Linux介绍 1.1 Linux是…...
微服务设计和高并发实践
文章目录 1、微服务的设计原则1.1、服务拆分方法1.2、微服务的设计原则1.3、微服务架构 2、高并发系统的一些优化经验2.1、提高性能2.1.1、数据库优化2.1.2、使用缓存2.1.3、服务调用优化2.1.4、动静分离2.1.5、数据库读写分离 2.2、服务高可用2.2.1、限流和服务降级2.2.2、隔离…...
2023年高教社杯数学建模思路 - 案例:粒子群算法
文章目录 1 什么是粒子群算法?2 举个例子3 还是一个例子算法流程算法实现建模资料 # 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 什么是粒子群算法? 粒子群算法(Pa…...
Tomcat 集群介绍
一.Tomcat 集群介绍 在实际生产环境中,单台 Tomcat 服务器的负载能力或者说并发能力在四五百左右。大 部分情况下随着业务增长,访问量的增加(并发量不止四五百),单台 Tomcat 服务器是 无法承受的。这时就需要将多台 Tomcat 服务器组织起来&a…...
Windows右键添加用 IDEA 打开
1.安装IDEA时 安装时会有个选项来添加,如下: 勾选即可 2.修改注册表 安装时未勾选,可以把下面代码中程序路径改为自己的,保存为对应的 idea.reg文件,双击即可 Windows Registry Editor Version 5.00[HKEY_CLASSES…...
Golang 中return和defer执行先后顺序
先给出最终结论: 执行return语句 -> 执行defer函数 -> 函数返回 这里可能会有一个疑问, 执行return语句和函数返回难道不是一回事? Golang语言中函数的return不是原子操作,而是分为了两步: 返回值赋值真正函数返回 Gol…...
业务数据模拟/采集
业务数据模拟/采集 2.2 业务数据模拟 2.2.1 连接MySQL 通过MySQL可视化客户端连接数据库。2.2.2 建表语句 1)通过SQLyog创建数据库2)设置数据库名称为gmall,编码为utf-8,排序规则为utf8_general_ci3)导入数据库结构脚本…...
OpenGL渲染与几何内核那点事-项目实践理论补充(二-1-(1):当你的CAD学会“想象”:图形技术与AI融合的三个层次)
TOC 代码仓库入口: github源码地址。gitee源码地址。 系列文章规划: (OpenGL渲染与几何内核那点事-项目实践理论补充(一-1-(1):从开发的视角看下CAD画出那些好看的图形们))OpenGL渲染与几何内核那点事-项…...
OpenClaw多终端同步:手机遥控Phi-3-mini-128k-instruct执行电脑任务
OpenClaw多终端同步:手机遥控Phi-3-mini-128k-instruct执行电脑任务 1. 为什么需要手机遥控电脑? 上周五晚上十点半,我正躺在沙发上刷手机,突然想起有个重要文档忘在办公室电脑里了。如果按传统方式,我需要ÿ…...
DOCX转LaTeX:从繁琐排版到学术自动化的无缝过渡
DOCX转LaTeX:从繁琐排版到学术自动化的无缝过渡 【免费下载链接】docx2tex Converts Microsoft Word docx to LaTeX 项目地址: https://gitcode.com/gh_mirrors/do/docx2tex 痛点场景:学术写作中的格式转换困境 深夜三点,研究生小李盯…...
Flink的反压机制
目录 1. 什么是反压? 2. Flink 反压机制的演变 第一代:基于 TCP 的传播(Flink 1.5 之前) 第二代:基于信用制的反压(Flink 1.5+,当前版本) 3. 基于信用制的反压详解 核心组件 工作流程(对应上图) 优势 4. 如何识别和处理反压? 识别(通过 Flink Web UI) …...
基于胸部正位X光片的两阶段对比学习椎体压缩性骨折筛查框架文献速递-多模态医学影像最新进展
2026.4.2本研究提出一种基于胸部正位X光片的双阶段对比学习框架TADC-Net,通过模仿放射科医生的诊断流程,解决了器官遮挡和类间相似性等挑战,实现了椎体压缩性骨折的早期精准筛查,显著提升了诊断性能和临床辅助准确性。Title题目01…...
收藏备用!AI大模型自学路线(小白/程序员专属),从入门到实战少走90%弯路
当下AI大模型已成技术领域的核心热点,无论是零基础小白,还是想转型进阶的程序员,都纷纷投身其中。但自学过程中,多数人都会陷入“找不到方向、学了不会用、越学越迷茫”的困境。今天就为大家整理一份系统、可落地、无冗余的AI大模…...
WordPress用Linux服务器还是Windows服务器更好?
对于绝大多数 WordPress 用户来说,Linux 服务器是更好的选择。 WordPress 本身是用 PHP 编写的,最初就是为 Linux 环境(特别是 LAMP/LEMP 架构)设计的。虽然它也可以在 Windows 上运行,但在性能、成本、生态支持和安全…...
2026短视频获客决胜点:AI矩阵系统哪家好?深度评测四大“增长黑科技”
摘要:进入2026年,短视频矩阵运营已从“人力的博弈”全面进化为“算法、AI产力与底层架构安全”的代际竞赛。当企业主在决策“AI矩阵系统哪家好”时,考量标准已不再是简单的分发功能,而是国内IP隔离的稳健性、全球大模型࿰…...
AI Agent自我进化底层教程(非常详细),收藏这一篇就够了!
一句话讲清楚👉🏻 MemSkill通过可学习和演进的"记忆技能"系统,让AI Agent能够动态选择和优化记忆操作,实现真正的自我进化。 背景:AI Agent的记忆困境 2026年,AI Agent已经成为人工智能领域最热…...
13-40K!AI大模型应用工程师,非常详细收藏我这一篇就够了
■ AI大模型应用工程师 13-40K 01 AI大模型应用工程师 ■ 岗位职责: 1、负责AI大模型在实际业务场景中的应用开发,提升模型性能与用户体验; 2、参与需求分析,根据不同类型的需求场景,结合业务目标选择AI技术/模型实现相…...
