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

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.xdnf.cn/news/15128.html

相关文章:

  • 第4章:实战项目一 打造你的第一个AI知识库问答机器人 (RAG)
  • 数据库技术体系及场景选型方案
  • 【机器学习】BeamSearch算法
  • 10.9 大模型训练数据优化实战:3步让准确率从68%飙升至79%
  • 3、Unity免费插件整合
  • git入门之安装tortoisegit
  • UNet改进(19):基于残差注意力模块Residual Attention的高效分割网络设计
  • 三码合一:OneCode注解驱动的新时代编码范式
  • 【算法训练营Day10】栈与队列part2
  • TCP协议格式与连接释放
  • Python 机器学习核心入门与实战进阶 Day 7 - 复盘 + 综合实战挑战
  • java idea 本地debug linux服务
  • C++STL-String
  • 题解:P13017 [GESP202506 七级] 线图
  • spring-data-jpa + Alibaba Druid多数据源案例
  • Flutter基础(前端教程⑧-数据模型)
  • NHibernate案例
  • thinkphp使用redis抢单实例
  • 提取出Wallpaper Engine壁纸的mpkg类静态壁纸
  • LKT4304稳定可靠高兼容性国产安全加密芯片
  • Linux操作系统之进程间通信:管道概念
  • Qt6中模态与非模态对话框区别
  • 基于Spring Boot+Vue的巴彦淖尔旅游网站(AI问答、腾讯地图API、WebSocket及时通讯、支付宝沙盒支付)
  • 以太网基础④IP 协议介绍与 IP 校验和算法实现
  • Deepseek搭建智能体个人知识库
  • HashMap的get与put流程源码深度解析
  • 详解CAN总线的位填充机制
  • LLM的表征做减法的是什么,自然语言是一个矩阵,怎么进行减法的
  • S7-1500——(一)从入门到精通1、基于TIA 博途解析PLC程序结构(二)
  • 服务器中source: not found解决方法