Redis--哨兵机制与CAP定理
对于master的宕机之后的冷处理是无法实现高可用的。Redis2.6开始提供高可用的解决方案--Sentinel 哨兵机制。在Redis集群中增加一个节点充当Sentinel哨兵用来监视master运行状态在master宕机后自动指定一个slave充当新的master整个过程无需人工参与由哨兵自动完成。但是如果这个Sentinel哨兵发生故障整个集群就会瘫痪这要怎么解决为Sentinel 创建一个集群一个哨兵宕机不会影响整个Redis集群的运行。那这些Sentinel 哨兵是如何工作的呢每个Sentinel 都会定时向master发送心跳如果master在有效时间内回应了说明master运行正常。如果Sentinel集群中有quorum 个哨兵没有收到回应就认为master宕机了然后会有一个Sentinel做Failover 故障转移。也就是将某个slave晋升为新的master。Sentinel集群搭建复制sentinel.conf将Redis安装目录中的sentinel.conf复制到cluster目录中。该文件用于存放sentinel集群的公共配置。修改sentinel.confsentinel monitor指定sentinel要监控的master是谁【ip port】并为master起名。该名称会在后面的配置中使用。同时指定sentinel集群中决定master 宕机判断的 quorum 数量。quorum的另一个作用是在sentinel的Leader选举时至少要有maxquorumsentinelNum/2 1个sentinel参与选举才能进行。这里需要注释掉这个配置因为要在后面的其他配置文件中设置。sentinel auth-pass如果master主机设置了访问密码该属性指定master的主机名与访问密码。新建sentinel26380.conf、sentinel26381.conf、sentinel26382.conf在cluster目录下新建这三个文件作为Sentinel的配置文件Redis高可用集群启动先启动三个Redis并设置主从关系可以在slave的配置文件里设置replicaof 192.168.1.100 6379 来设置为他的slave避免每次启动后都要输入命令这种方式不用输入命令就直接设置好主从关系了。启动Sentinel集群。首先redis-server 和redis-sentinel 命令本质上是同一个命令。之所以可以启动不同的进程是因为启动时所加载的配置文件不同。所以在启动Sentinel时要指定sentinel.conf文件。两种启动方式redis-sentinel sentinel26380.conf 或者 redis-server sentinel26380.conf --sentinel启动三台sentinel后可以通过info sentinel 查看基本信息。启动之后sentinel的配置文件会自动增加很多信息。Sentinel优化配置在公共的sentinel.conf文件中可以设置一些属性值对sentinel进行优化。sentinel down-after-milliseoncds每个sentinel会定期发送ping命令来判断master、slave及其他sentinel 是否存活。如果在指定时间内没收到响应sentinel就会主观认为该主机宕机。这个时间默认30秒。sentinel parallel-syncs该属性用于指定在故障转移期间原master宕机新master晋升后允许多少个slave同时从新master进行数据同步。默认1表示所有slave逐个从新master进行数据同步sentinel failover-timeout指定故障转移超时时间默认3分钟。该超时时间的用途有当第一次故障转移失败在同一个master上进行第二次故障转移尝试的时间为该时间的2倍。新master晋升完毕slave从老master强制转到新master进行数据同步的时间阈值。取小正在进行的故障转移所需时间的阈值。新master晋升完毕所有replicas 的配置文件更新为新master的时间阈值。sentinel deny-scripts-reconfig指定是否可以通过命令sentinel set 动态修改notification-script 和client-reconfig-script 两个脚本。默认禁止如果允许动态修改可能会引发安全问题。动态修改配置当redis-cli 连接上sentinel 后通过sentinel set 命令 可同台修改配置信息比如执行sentinel set mymaster quorum 2sentinel set命令支持的参数有哨兵机制原理三个定时任务sentinel 维护了三个定时任务以检测Redis节点和其他sentinel节点的状态info任务每个sentinel 每10秒向Redis集群中的每个节点发送info命令以获取最新的Redis拓扑结构。心跳任务每个sentinel 每1秒向所有Redis节点及其他sentinel节点这里好像sentinel不知道其他sentinel地址发送一条ping命令检测这些节点是否存活。发布/订阅任务每个Sentinel节点在启动时会向所有Redis节点订阅__sentinel__:hello主题的信息当Redis节点中该主题的信息发生变化就会立即通知到所有订阅者这时就能获取到其他sentinel的信息。当sentinel节点收到主题信息后会读取并解析这些信息然后完成以下工作如果发现有新的Sentinel节点加入就记录新加入节点的信息并与其建立连接。如果发现有Sentinel Leader 选举的选票信息则执行Leader选举过程。汇总其他Sentinel节点对当前Redis节点在线状态的判断结果作为Redis节点客观下线的判断依据。Redis节点下线判断主观下线每个sentinel 每秒向Redis节点发送心跳检测如果Sentinel在down-after-milliseconds 时间内没收到回复则Sentinel节点对该Redis节点做出“下线”判断。这个判断只是当前Sentinel节点认为的。所以称为主观下线客观下线当sentinel 主观下线的节点是master时该sentinel节点会向其他sentinel节点询问对master节点的判断。其他sentinel 节点会响应0在线或1下线。当sentinel 收到超过quorum 个下线判断后就会对master做出客观下线判断。Sentinel Leader 选举当Sentinel 做出客观下线判断后由Sentinel Leader 来完成后续的故障转移。Leader 选举是通过Raft算法实现。Raft算法大致思路如下每个选举参与者都有当选Leader的资格。 当完成“客观下线”判断后会立即“毛遂自荐”推选自己当选Leader将自己的提案给所有参与者。 其他参与者收到提案后只要手中的选票投出去。就会通过该提案并将同意结果反馈给提案者。 后续再过来的提案会由于参与者没有选票而被拒绝。 当提案者收到同意数量大于maxquorumsentinelNum/2 1时就当选Leader注意网络正常情况下基本谁先做出“客观下线”判断谁就会发起选举谁就会当选Leader选举会在故障转移之前进行。故障转移结束后Leader不再存在。master选择算法过滤主观下线的没有心跳的replica-priority0的Redis节点在剩余Redis节点中选出replica-priority最小的节点列表如果只有一个直接返回。从优先级相同的节点列表中选出复制偏移量最大的节点如果只有一个直接返回。从复制偏移量相同的节点列表中选择动态ID最小的节点返回。故障转移过程sentinel Leader 复制故障转移步骤如下sentinel Leader根据master选择算法选出一个slave作为新的mastersentinel Leader向新master发出slaveof 指令使其晋升为mastersentinel Leader向新master 发送 info replication 指令获取master的动态IDsentinel Leader向其余Redis节点发送消息告知他们新master 的动态IDsentinel Leader向其余Redis节点发送slaveof masterIP masterport指令使他们称为新master的slavesentinel Leader从所有slave 中每次选择parallel-syncs个slave 进行数据同步直到所有slave全部同步完毕。故障转移完毕。节点上线不同类型的节点上线方式不同原Redis节点上线无论是master还是slave只要是Redis集群的节点上线只要启动Redis即可。Sentinel会定时查看这些节点是否恢复如果已恢复就会从当前的master进行数据同步。如果是原master上线新master晋升后sentinel Leader 会立即将原master 更新为slave然后才定期查看其是否恢复。新Redis节点上线在Redis集群内新增一个节点上线需要手动完成。添加之前必须知道当前的master在启动后运行slaveof 命令加入集群。Sentinel节点上线添加之前必须知道当前master在配置文件内修改sentinel monitor 属性指定当前master然后启动sentinel。CAP定理CAP定理指在一个分布式系统中一致性 Consistency、可用性 Available、分区容错性 Partition tolerance三者不可兼得。一致性C分布式系统中多个主机之间是否保持数据一致的特性即当数据发生更新操作后每个主机的数据仍然处于一致。可用性A系统提供的服务必须一直处于可用的状态当请求到来能在有效时间内做出响应。分区容错性P分布式系统在遇到网络分区故障时仍能够对外提供服务。由于分布式系统的网络环境不可控因此系统必须具备分区容错性但系统不能同时保证一致性和可用性。即要么CP要么AP。BASE理论BASE 是Basically Available基本可以、Soft state软状态、Eventually consistent最终一致性 三个短语的简写。BASE 是对CAP中一致性和可用性权衡的结果是基于CAP逐步演化而来。BASE 的思想是即使无法做到强一致性但可以根据自身业务特点采用适当方式达到最终一致性。基本可用基本可用指分布式系统在出现不可预知故障时允许损失部分可用性。软状态软状态指数据存在的中间状态认为该中间状态不会影响系统的整体可用性。即允许主机间进行数据同步的过程存在延迟。软状态就是一种灰度状态、过度状态。最终一致性最终一致性强调系统中的所有数据副本在经过一段时间的同步后最终达到一致的状态。最终一致性的本质是保证最终数据达到一致不需要实时一致。CAP的应用Zookeeper : CP 模式保证一致性牺牲可用性。ConsulCP模式保证一致性牺牲可用性。RedisAP模式保证可用性牺牲一致性。

相关新闻

实验室仪器电脑如何审计:采集软件、导出文件和远程维护要分开看

实验室仪器电脑如何审计:采集软件、导出文件和远程维护要分开看

实验室仪器电脑会同时运行采集软件、导出数据文件、连接内网平台、保存截图和接受远程维护。排查时如果只有单点日志,很难判断数据文件、采集软件和远程处理之间的关系。更稳妥的做法,是把文件操作、程序运行、屏幕过程和维护记录分层梳理。一、审计对象…

2026/7/8 0:11:18阅读更多 →
STM32F215RE与A3910电机驱动方案详解

STM32F215RE与A3910电机驱动方案详解

1. 项目概述:A3910与STM32F215RE的黄金组合在嵌入式系统开发领域,选择合适的驱动芯片和主控MCU往往决定了项目的成败。A3910作为一款高性能电机驱动芯片,搭配基于ARM Cortex-M3内核的STM32F215RE微控制器,能够构建出响应迅速、控制…

2026/7/8 0:11:18阅读更多 →
ChanlunX缠论插件:如何用算法思维解决传统技术分析的主观困境?

ChanlunX缠论插件:如何用算法思维解决传统技术分析的主观困境?

ChanlunX缠论插件:如何用算法思维解决传统技术分析的主观困境? 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 您是否曾面对复杂的K线图感到困惑?是否在手动划分笔段时…

2026/7/8 0:06:17阅读更多 →
锁环式同步器 3D 建模与装配:基于 CAD 的 5+1 档变速器核心部件设计

锁环式同步器 3D 建模与装配:基于 CAD 的 5+1 档变速器核心部件设计

锁环式同步器三维建模与装配实战:从CAD设计到变速器核心部件优化1. 同步器技术基础与设计原理锁环式同步器作为现代手动变速器的核心部件,其精巧的机械结构解决了换挡过程中的转速同步难题。这种诞生于1918年的机械装置,通过摩擦锥面与锁止机…

2026/7/8 1:16:22阅读更多 →
中南大学团队打造“自我进化“的AI训练数据工厂

中南大学团队打造“自我进化“的AI训练数据工厂

这项由中南大学与香港科技大学联合开展的研究,以预印本形式发布于2026年6月30日,论文编号为arXiv:2606.31537,感兴趣的读者可通过该编号查询完整论文。每当我们看到AI生成的图片中出现歪七扭八、根本看不清的文字时,大多数人都会下…

2026/7/8 1:16:22阅读更多 →
高斯泼溅(3DGS) 模型动辄几百 MB?这套纯前端压缩流程,把体积干到了 30 MB

高斯泼溅(3DGS) 模型动辄几百 MB?这套纯前端压缩流程,把体积干到了 30 MB

相信很多做 3D 扫描、数字展厅或者 Web3D 开发的朋友都遇到过这个问题:用 Luma AI、Polycam 或者 KIRI Engine 拿手机扫了一个极度逼真的商品或房间,兴奋地导出 .ply 原片,结果一看文件大小——大几百 MB。你硬着头皮把这个几百兆的模型发给甲…

2026/7/8 1:16:22阅读更多 →
抖音内容高效管理:从批量下载到智能归档的完整解决方案

抖音内容高效管理:从批量下载到智能归档的完整解决方案

抖音内容高效管理:从批量下载到智能归档的完整解决方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback supp…

2026/7/8 1:16:22阅读更多 →
同样的问题,为什么别人能解决,你却被困在原地?

同样的问题,为什么别人能解决,你却被困在原地?

同样的问题,为什么别人能解决,你却被困在原地?你有没有发现一个扎心的事实:同样的课,别人听完就能用,你听完就忘了。同样的方法,别人用了就有效,你用了就翻车。同样的道理&#xff0…

2026/7/8 1:16:22阅读更多 →
室外组别比赛场地

室外组别比赛场地

简 介: 【】 华北赛区轮腿穿越组同学反映,今年室外比赛场地由操场改为瓷砖广场,引发争议。学生指出:1)瓷砖低色度影响视觉识别;2)各校瓷砖差异大,缺乏统一标准;3&#xf…

2026/7/8 1:11:22阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/7 4:43:43阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/7 2:56:31阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/7 1:03:28阅读更多 →
作为一个给团队打绩效的人,我想说几句

作为一个给团队打绩效的人,我想说几句

我每半年都会给团队成员打绩效,也会参与和 CTO 的绩效校准,所以从管理者的视角,说说这件事 首先,我先把结论告诉你:接受结果,但一定要把原因问清楚。 因为当绩效公布到你这里的时候,结果基本已…

2026/7/8 0:01:17阅读更多 →
A股股指期货:全维度解析(多表格结构化完整版)

A股股指期货:全维度解析(多表格结构化完整版)

一、基础定义与核心本质股指期货全称股票价格指数期货,是中国金融期货交易所(中金所)上市的标准化金融期货合约,交易标的为 A 股大盘指数,约定未来特定时间按约定价格现金交割指数涨跌差价,不交割一篮子股票…

2026/7/8 0:01:17阅读更多 →
iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事 【免费下载链接】Jailbreak iOS 26.4 - 26, 17 - 17.7.5 & iOS 18 - 18.7.3 Jailbreak Tools, Cydia/Sileo/Zebra Tweaks & Jailbreak News Updates || AI Jailbreak Finder &…

2026/7/8 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/7 5:11:21阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/7 5:11:21阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/7 5:11:21阅读更多 →