【学习笔记】Reids的哨兵机制

news2025/7/19 6:22:17

【学习笔记】Reids的哨兵机制

文章目录

  • 【学习笔记】Reids的哨兵机制
    • 前言
    • 什么是哨兵机制?
    • 如何判断主库是否挂掉?
    • 主从库的切换和消息的通知

前言


什么是哨兵机制?

哨兵机制(sentinel) 是Redis解决高可用的一种解决方案:它是由一个或者多个sentinel 实例组成的一个sentinel 系统。

哨兵架构图:

在这里插入图片描述

作用:

  • 监控:Sentinel 会不断检查您的master和slave是否按预期工作。
  • 选主:如果master故障,Sentinel会将一个slave提升为master。当故障实例恢复后也以新的master为主。
  • 通知: Sentinel充当Redis客户端的服务发现来源,当集群发生故障转移时,会将最新信息推送给Redis的客户端,比如告诉客户端master节点变更了,这样客户端写数据的时候才不会找错节点。

为什么需要哨兵机制?

在上节的 Redis的主从复制(此处跳转文章链接) 我们讲到过一个 主库 可以对应多个 从库 ,如果挂掉一个 从库 的话客户端可以访问其他 从库。这并不影响客户端的体验。但是如果是 主库 挂掉呢? 那么客户端的 写命令 又该如何执行呢?

在这里插入图片描述

主库 挂掉我们就需要选择一个 从库 来当主库。那么就需要解决一下三个问题:

  • 主库 是否真的挂掉?
  • 切换哪个 从库 比较好呢?
  • 如何通知把这个消息通知给其他 从库客户端 呢?

其实我们可以把 主库 比作 皇帝 ,当一个皇帝驾崩当然需要由他的很多个儿子中选择继承人的嘛。

第一件事情就是要确认 老皇帝 是否真的驾崩?第二要选择下一任接班人是谁呢?是帅气逼人的太子,还是能文能武的八阿哥呢?第三如果 新皇 登基 ,如何去通知 合作的国家(客户端) 和 远在外地的 其他皇子(其他从库) 呢?

听过上述那接下来我们就一一解释上述问题。

如何判断主库是否挂掉?

一般情况 哨兵 会向 主库和从库 每个1秒发送 ping 。如果 主库和从库 正常,则就会给哨兵一个 回应 。那么 哨兵 就能判断是否 主库和从库 是否正常了。

在这里插入图片描述

主库 在规定的时间内没有回复 哨兵 ,则会被认为是主观下线。如果是网络拥堵造成 主库 不能及时返回响应,那么是不是就会出现误判呢?所以我们就需要多个 哨兵 (三个起步) 来进行判断。

当然也会有客观下线。那怎么让 主库 客观下线呢?我们可以看下图:

在这里插入图片描述

也就是 哨兵之间的投票制 ,上图中的 三大于二,也就会导致 主库 客观下线,然后重新选取 主库

注意:哨兵集群中也是有一个 leader,而这个leader也是决定着主库和从库之间的切换问题。

主从库的切换和消息的通知

哨兵集群 认为原来的 主库 下线时,则就会进行一个 主从库的切换

在这里插入图片描述

我们可以分为以下四步:

  • 第一步:在已下线主节点(旧主节点)属下的所有「从节点」里面,挑选出一个从节点,并将其转换为主节点,选择的规则:
    • 过滤掉已经离线的从节点;
    • 过滤掉历史网络连接状态不好的从节点;
    • 将剩下的从节点,进行三轮考察:优先级、复制进度、ID 号。在每一轮考察过程中,如果找到了一个胜出的从节点,就将其作为新主节点。
  • 第二步:让已下线主节点属下的所有「从节点」修改复制目标,修改为复制「新主节点」;
  • 第三步:将新主节点的 IP 地址和信息,通过「发布者/订阅者机制」通知给客户端;
  • 第四步:继续监视旧主节点,当这个旧主节点重新上线时,将它设置为新主节点的从节点;

至此 主从库转移 完毕。

发布者/订阅者机制」通知给客户端;

  • 第四步:继续监视旧主节点,当这个旧主节点重新上线时,将它设置为新主节点的从节点;

至此 主从库转移 完毕。


题外话:
突然在自己的草稿中发现自己好久之前写的文章,然后又完善了一下嘿嘿,所以就发出来吧。在这里也非常感谢 小林 大佬,本文也是借鉴该大佬的文章嗷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/37939.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

视频会议解决方案-最新全套文件

视频会议解决方案-最新全套文件一、建设背景二、建设思路业务挑战三、建设方案四、获取 - 视频会议全套最新解决方案合集一、建设背景 随着中国经济的迅速发展,很多企业的发展也进入快车道,分支机构越来越多,形成了遍布全国范围甚至全球范围…

Echarts:惊艳的Map

大家在网上看天气预报的时候应该就看到过在中国地图上显示不同省份的温度,并根据温度的高低显示不同的颜色,又或者看到各个省份的新冠肺炎新增人数,根据不同的新增人数显示不同的颜色之类的图像。这些,使用echarts中的map就可以实…

python实现灰色关联法(GRA)

原文:https://mp.weixin.qq.com/s/Uuri-FqRWk3V5CH7XrjArg 1 灰色关联分析法简介 白色系统是指信息完全明确的系统,黑色系统是指信息不完全明确的系统,而灰色系统是介于白色与黑色系统之间的系统,是指系统内部信息和特征是部分已…

IDEA设置和相关快捷键记录汇总

IDEA设置和相关快捷键 前言 Java 开发 现在基本都是使用 IDEA 作为开发工具,IDEA 有很多设置和常用的快捷键,熟悉之后能更好的提高开发效率,这里总结了下从慕课网的内容 开发工具IDEA从入门到爱不释手-慕课网 (imooc.com),摘录做…

Kafka - 04 Java客户端实现消息发送和订阅

1. Kafka测试命令行操作 1. 主题命令行操作 在上一节中我们安装了Kafka单机环境和集群环境,这一节来测试下Linux环境安装Kafka后的命令行操作。 我们之前在用Windows环境安装Kafka Kafka应用场景|基础架构|Windows安装|命令行操作 和命令行操作时,讲到…

哪种类型的蓝牙耳机好?超高性价比蓝牙耳机推荐

朋友让我推荐蓝牙耳机的时候,总是喜欢问哪款蓝牙耳机的性能更强,想要直接入手那款性能更强的蓝牙耳机,以此节省对比的时间。但是用户自行进行对比的步骤,显然是不能省的,所以推荐这四款高性价比的蓝牙耳机,…

华为云桌面Workspace,让你的办公更加舒适惬意

在各行各业转型的过程中,企业对于线上办公的需求不断增多,越来越需要一个云办公平台,为企业更好实现数字化网络化办公降本增效。正逢佳节之际,在此为各大企业推荐一个高效的办公神器——华为云桌面Workspace。相信作为企业决策者的…

详解设计模式:抽象工厂模式

工厂方法模式,又称工厂模式、多态工厂模式和虚拟构造器模式,通过工厂父类定义负责创建产品的公共接口,子类负责生产具体对象。可以理解为简单工程模式的升级,解决简单工厂模式的弊端。 ~ 本篇内容包括:关于…

Executors-四种创建线程的手段

1 Executors.newCachedThreadPool() 从构造方法可以看出,它创建了一个可缓存的线程池。当有新的任务提交时,有空闲线程则直接处理任务,没有空闲线程则创建新的线程处理任务,队列中不储存任务。线程池不对线程池大小做限制&#x…

ESP三相SVPWM控制器的simulink仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB程序 1.算法描述 SVPWM则以三相的合成矢量为出发点,其基本思想为:在数学意义上的abc轴也好,αβ轴也好,其产生的电压都应该等于dq轴合成的那个电压。那么只要让…

swiper在动态创建dom过程中的问题:数据从后端请求回来后加载到页面上,dom加载完发现swiper没用了

怎么动态创建div标签: 要轮播的数据是后端返回的,所以我们要发ajax请求接收数据; 下面演示的是已经接收回来的数据,动态创建div标签: setTimeout(()>{var list ["aaa","bbb","ccc&quo…

【Redis】从计算机组成原理开始讲解为什么会出现Redis

文章目录前置知识数据库的出现Redismemcache与redis的区别前置知识 首先需要知道的一个常识就是:数据是存放在磁盘里面的。 而磁盘有两个指标: 寻址:表示找到对应的数据所需要的时间,ms带宽:表示单位时间可以有多少个…

Python排序:冒泡排序,选择排序,插入排序,希尔排序

编程中的交换元素逻辑: # python中交换元素 有内置的三方底层逻辑 可以直接交换 a 2 b 3 a, b b, a print(a) # a为3# 其他编程需要有一个中间的变量来转换 变量设为temp a 2 b 3 temp a a b b temp print(a) # a为3 -----冒泡排序----- 相邻…

openfeign原理

openfeign原理 EnableFeignClients注解启用Feign客户端,通过Import注解导入了FeignClientsRegistrar类加载额外的Bean。FeignClientsRegistrar实现了ImportBeanDefinitionRegistrar接口,在Spring启动过程中会调用registerBeanDefinitions方法注册BeanDe…

自动化项目倍加福WCS-PG210E使用GSD文件

1.硬件电气连接 WCS-PG210E WCS3B WCS2B Pin 颜色 Pin 颜色 24V UB 1 BN棕色 2 WH白色 0V GND 3 BU蓝色 3 BU蓝色 RS485- RS485- 4 BK黑色 1 BN棕色 RS485 RS485 2 WH白色 4 BK黑色 保留 5 GY灰色 5 GY灰色 2. 安装W…

Nginx (4):nginx动静分离

什么是动静分离不解释了,网上说的很清楚,这里只说配置 目的 02虚拟机运行一个tomcat,处理动态请求,而对静态文件的访问则交给01虚拟机。操作 下面是01虚拟机的配置文件内容: server {listen 82;listen [::]:82;#root /…

六、nacos环境隔离、服务配置拉取和多环境配置共享

文章目录一、环境隔离-namespace1.namespace理解2.创建命名空间二、Nacos-实现配置管理三、nacos-实现服务配置拉取1.非热更新2.热更新:四、实现多环境配置共享1.开发环境:2.测试环境3.结论一、环境隔离-namespace 1.namespace理解 Nacos中服务存储和数…

Element Plus 组件库相关技术:7. 组件实现的基本流程及 Icon 组件的实现

前言 本章节我们将要实现 Icon 组件,Icon 组件应该是所有组件里面最简单的一个组件了,所以我们由简入深,循序渐进进行学习。Icon 组件虽然简单,但它却包含了一个组件的全部基础流程,通过实现 Icon 组件进行理解 Eleme…

疫情失业之下,测试的未来在哪里

前天和测试圈子里一个朋友聊了关于今年求职招聘市场行情和个人认知以及发展副业的话题。 聊起了今年的求职招聘行情,他说他们公司已经裁了一波人了,估计年底还会有一波裁员。 今年的市场冷的有点吓人,在这么下去,他也会担心自己…

nacos实现负载均衡、权重

文章目录一、nacos服务分级存储模型二、Nacos-NacosRule 实现负载均衡三、nacos-服务实例的权重设置一、nacos服务分级存储模型 修改 application.yml 配置文件: spring:cloud:nacos:server-addr: localhost:8848discovery:cluster-name: HZ #集群位置&#xff0c…