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

Redis-哨兵选取主节点流程

1.主观下线:

哨兵节点通过心跳包,判定redis服务器是否正常工作,若心跳包没有按时到达,说明redis服务器出现故障了. 此时还需要再进行判定,不能排除是网络波动的影响,认为redis节点的出现故障.

2.客观下线:

当多个哨兵节点都认为主节点出现故障了(认为主节点出现故障的哨兵节点数目达到法定票数),就认为该主节点确实是下线了.

3.选取leader哨兵节点:

当主节点出现故障后,哨兵节点就要采取措施补救,先从哨兵节点集合中选出一个leader哨兵节点,由这个leader哨兵节点后续的主节点替换和后续工作.

选取leader流程:

每个哨兵节点只有一票的选举权,最先判断到主节点确实出故障的哨兵节点会先给自己投一票,然后,别的哨兵节点发现有哨兵节点已经获得了票,就会将票投给他,也就是延迟性最小的节点最可能会成为leader节点.

这里也是为什么强调要将哨兵节点个数设成单数个的原因,减少了两个节点都获取到相同的票数的情况.

4.选取新主节点:

leader选取完后,就要开始选取一个从节点作为主节点,选取依据:

1>.优先级: 每个redis节点都会在配置文件中有一个优先级的设置 slave-priority,优先级高的节点更会被选取为主节点.

2>.offset: offset大的更会被选取;offset越大.说明从节点和主节点同步的进度越相近,数据越相近.

3>.runId: 每个redis节点启动的时候都会随机生成一个数字串runId,当从节点的优先级和offset都相同时,就会随机选取一个,指定为主节点了.

5.执行主从替换:

1>. leader会控制选取的新的主节点执行slaveof no one命令,让自己成为主节点;

2>. 让剩余从节点执行slaveof  ip  port命令.进行主节点切换;

3>. 再通知客户端程序,告知新的主节点,后续读写操作在新的主节点上执行.

哨兵节点并不存储数据,只是监控作用,并且在实际开发中,必须将其部署在不同的机器上,否则当机器出故障时,所有的哨兵节点就会全军覆膜了.是无法发挥作用的.

http://www.lryc.cn/news/583609.html

相关文章:

  • CVE-2025-32463复现
  • AI进化论03:达特茅斯会议——AI的“开宗立派”大会
  • SpringBoot实现MCP
  • Git版本控制完全指南:从入门到实战(简单版)
  • 【LeetCode207.课程表】以及变式
  • Flutter基础(前端教程⑨-图片)
  • 「macOS 系统字体收集器 (C++17 实现)」
  • JavaScript对象的深度拷贝
  • 全球发展币GDEV:从中国出发,走向全球的数字发展合作蓝图
  • 【RK3568+PG2L50H开发板实验例程】FPGA部分 | DDR3 读写实验例程
  • 【学习笔记】OkHttp源码架构解析:从设计模式到核心实现
  • 【Java】【力扣】【字节高频】3.无重复字符的最长字串
  • 便捷的电脑自动关机辅助工具
  • Deepseek搭建智能体个人知识库
  • yolo8实现目标检测
  • 操作系统核心技术剖析:从Android驱动模型到鸿蒙微内核的国产化实践
  • Day 56
  • EPLAN 电气制图(六):结构盒与设备管理器核心概念(基础知识选看)
  • Linux操作系统之进程间通信:管道概念
  • EF提高性能(查询禁用追踪)(关闭延迟加载)
  • 神经网络初步学习3——数据与损失
  • 如何选择时序数据库:关键因素与实用指南
  • HCIP(综合实验)
  • 备受期待的 MMORPG 游戏《侍魂R》移动端现已上线 Sui
  • 【教程】基于GNN的药物相互作用网络中的链接预测
  • 200nl2sql
  • 安全管理协议(SMP):配对流程、密钥生成与防中间人攻击——蓝牙面试核心考点精解
  • python 在运行时没有加载修改后的版本
  • 自动驾驶决策与规划
  • 华为动态路由配置