当前位置: 首页 > news >正文

Redis 哨兵模式(Sentinel Mode)

哨兵模式是在主从模式基础上增加了哨兵机制,主从模式解决了读写分离,但缺乏自动容错,哨兵模式在主从基础上,增加了高可用性。在这里插入图片描述

1. 核心作用

  • 高可用性:当 Master 节点故障时,自动完成主从切换,保证服务持续可用。
  • 读多写少适用:多个 Slave 分担读请求,Master 负责写请求。

2. 故障检测机制

  • 主观下线(SDown)

    • Sentinel 每秒向节点发送 PING。
    • 若在 down-after-milliseconds 内未收到有效回复,判定该节点主观下线。
  • 客观下线(ODown)

    • 当一个 Sentinel 判断 Master SDown 后,会向其他 Sentinel 确认。
    • 若超过配置的 quorum (最低投票数,默认是 2)数量的 Sentinel 一致认为 Master 下线,则判定为客观下线。

3. Leader Sentinel 选举

  • 使用 Raft 算法选举一个 Leader Sentinel 来执行故障转移:

    1. 所有节点初始为 Follower(追随者,只接收并响应其他节点的投票或心跳,不主动发起选举。)。
    2. 若超时未收到心跳,节点转为 Candidate(候选者,主动发起投票,竞选成为 Leader Sentinel。) 并发起投票。
    3. 获得多数票的 Candidate 成为 Leader Sentinel。
    4. Leader (领导者)负责组织故障转移。

4. 新 Master 的选择规则

Leader Sentinel 在从节点中选择新的 Master,优先级如下:

  1. 排除 SDown/ODown 的节点。
  2. 优先选择 slave-priority (从节点优先级,Redis 从节点配置参数,用来指定该 Slave 在故障转移时的优先级;如果设置为 0,表示该 Slave 永远不会被提升为 Master)最大的节点。
  3. 若无优先级节点,则选择复制偏移量最大的节点(数据最完整)。
  4. 若仍有冲突,则选择 run_id(运行ID,每个 Redis 实例启动时都会生成一个唯一的run_id) 最小的节点(更稳定,越早启动的实例,run_id 越小,通常启动时间早、运行时间长、状态稳定,从而保证选出的主节点更加可靠和稳定。)。

5. 故障转移流程

  1. 将选中的 Slave 升级为新的 Master。
  2. 其他 Slave 节点重新配置为复制新 Master。
  3. 更新 Sentinel 配置文件和 Master/Slave 配置文件。
  4. 向客户端返回新的 Master 地址,保证写请求正常进行。

文章转载自:

http://NyK8cceq.rLbfp.cn
http://KI1EWtLh.rLbfp.cn
http://2f9XFwnR.rLbfp.cn
http://qWAN7F6d.rLbfp.cn
http://WZsfnB1Y.rLbfp.cn
http://CzXz9YWx.rLbfp.cn
http://Az33eiap.rLbfp.cn
http://XcStCoF7.rLbfp.cn
http://0h29CVpe.rLbfp.cn
http://0EFr88gV.rLbfp.cn
http://YdhcLpoC.rLbfp.cn
http://HbRLUgP1.rLbfp.cn
http://SO8NaVTL.rLbfp.cn
http://pvaJAOv1.rLbfp.cn
http://5LCGuDow.rLbfp.cn
http://gObuqsHE.rLbfp.cn
http://gOPdJ4Ql.rLbfp.cn
http://clHKGv9M.rLbfp.cn
http://T3uWztqm.rLbfp.cn
http://0yRThlvu.rLbfp.cn
http://vhlju3Ut.rLbfp.cn
http://WqxQlj5s.rLbfp.cn
http://UZQKlBM6.rLbfp.cn
http://hhzjyPmM.rLbfp.cn
http://I06trUPU.rLbfp.cn
http://X1PxpwhE.rLbfp.cn
http://J85ih2jN.rLbfp.cn
http://jyY3RluV.rLbfp.cn
http://px2M7vGe.rLbfp.cn
http://ByJvDRqi.rLbfp.cn
http://www.dtcms.com/a/365910.html

相关文章:

  • Reflection反射
  • rsync + lsyncd 的高效文件实时同步系统
  • Docker Pull 代理配置方法
  • 投影矩阵:计算机图形学中的三维到二维转换
  • GDAL 下载安装
  • 【深度学习新浪潮】用3DGS做三维重建有哪些主要的技术路线可供选择?
  • 论文介绍:“DUSt3R”,让 3D 视觉从“繁琐”走向“直观”
  • Redis初阶学习
  • 今日行情明日机会——20250903
  • 数据结构:图(Graph)
  • react-android-0.80.2-debug.aar下载很慢
  • ESLint 中与 Prettier 规则 与 editorconfig优先级
  • 如何开发一款高稳定、低延迟、功能全面的RTSP播放器?
  • 安卓APP备案的三要素包名,公钥,签名md5值详细获取方法-优雅草卓伊凡
  • Java学习笔记一(数据类型,运算符,流程控制)
  • HTML5圣诞网站源码
  • 自动化运维-ansible中对于大项目的管理
  • 《明朝那些事》读书笔记-王阳明:「知行合一」
  • FFMPEG H264
  • @Resource与@Autowired的区别
  • Parasoft C/C++test案例:基于CERT/CWE的代码合规自动化
  • 万家灯火背后的守护者:耐达讯自动化RS485转Profinet如何让石化生产“零隐患”
  • Java 的 Stream 流太难用了?——一名开发者的真实体验
  • Linux 的 swap 是什么
  • 1.0 机械加工基础-1-表面粗糙度、公差、几何公差
  • uni app 的app 端调用tts 进行文字转语音
  • LeetCode 392.判断子序列
  • 【matlab】SARSA算法及示例代码
  • 服务器搭建日记(十二):创建专用用户通过 Navicat 远程连接 MySQL
  • 红外人体感应(PIR)传感器介绍