Java实习生------Redis哨兵机制详解⭐⭐⭐

“无数的我们被世界碾压成一缩黑团,无数的我们试图与世界抗争到底”🌹

参考资料:图解redis 

目录

什么是哨兵机制?

哨兵机制主要干了哪三件事?

哨兵监控主节点的过程是怎样的?

判断主节点故障之后,谁来执行切换主节点的操作?

切换主节点的过程是怎样的?


话不多说,发车!

什么是哨兵机制?

我们都知道redis的架构是主从模式,即有一个主节点和多个从节点。试想这个问题,如果主节点发生故障宕机,那么也就无法再响应客户端的操作,尤其对于写操作,主节点故障宕机之后也就无法将数据同步给从节点。

这时,就需要人为地从众多从节点中选出一个作为主节点,然后让剩余从节点来指向这个主节点。这个过程的缺点就在一,选取主节点的过程需要人工操作

但是引入了哨兵机制,就不需要人为介入了,哨兵机制的作用就是当主节点故障宕机之后,选取主节点并继续接收客户端的请求。

哨兵机制主要干了哪三件事?

  • 监控:监控主节点是否发生故障
  • 选主:从众多从节点中选出一个作为主节点
  • 通知:通知其他的从节点,主节点已经更换

哨兵监控主节点的过程是怎样的?

哨兵每间隔一秒就会向主节点发送ping命令,如果能够收到响应,则说明主节点在正常工作;如果在规定时间内没有收到响应,那么哨兵就会认为主节点主观下线

这里的主观下线是说,只有发送ping命令的当前这一个哨兵判断主节点出故障了。虽然,主节点没有对ping命令作出回应,可能的原因还有网络阻塞等等,实际上主节点没有下线。为了避免这种误判的情况,就引入了一个哨兵集群,让多个哨兵一起判断主节点到底是否发生故障,如果多个哨兵都认为主节点故障,那么主节点此时会被判定为客观下线所以客观下线是多个哨兵一起判定的结果

具体过程如下:

  • 一个哨兵对主节点发送ping命令,主节点未回应,此时主节点被判断为主观下线
  • 当前哨兵向哨兵集群中的其他哨兵发送命令,让它们来判断主节点是否下线
  • 哨兵集群开始投票,如果认为主节点下线就投赞成票,否则投反对票
  • 如果赞成票的数量大于等于配置中的quorum值,那么主节点被判定为客观下线,进行切换主节点的操作

判断主节点故障之后,谁来执行切换主节点的操作?

哪个哨兵判断主节点主观下线,就由哪个哨兵来执行切主操作

比如哨兵A判断主节点主观下线,并且在其他哨兵投票之后,主节点被判断为客观下线,会向哨兵B和哨兵C发送命令,表示哨兵A想执行切主操作,由哨兵B和哨兵C来进行投票,哨兵A如果想得到执行主从切换的资格,必须要满足两个条件

  • 拿到半数以上的赞成票
  • 赞成票的数量要大于等于配置中的quorum值

切换主节点的过程是怎样的?

切换主节点的过程主要分为四步

  • 从旧主节点的所有从节点中,选出新主节点
  • 让旧主节点的从节点去复制新主节点的数据
  • 将新主节点的IP地址和信息通过发布、订阅机制通知客户端
  • 监控旧主节点,当其上线后将其修改为新主节点的从节点

第一步:选出新的主节点

这个过程涉及到三轮考察:优先级考察、复制进度考察、ID号考察

  • 优先级考察:redis配置文件中有个slave-priority字段表示优先级,进行优先级考察时就根据这个字段,选择优先级最高的从节点来当选主节点
  • 复制进度考察:如果有两个优先级相同的从节点,需要再判断复制进度(复制进度也就是从节点复制主节点最新数据的进度),在优先级相同的情况下,复制进度靠前的从节点会胜出
  • ID号考察:如果两个节点优先级和复制进度都相同,就会进入到这一轮,ID号就是每个节点的编号,它是用来唯一的标识节点的

经过以上三轮考察,就可以选举出一个新的主节点了,选出新主节点之后,这个新主节点使用SLAVEOF no one命令,解除从节点的身份,就真正的成为主节点了

第二步:所有从节点指向新主节点

哨兵向所有从节点发送slave of命令,之后旧主节点的从节点就成为新主节点的从节点了

第三步:通知客户,主节点已经切换

通知过程主要是由redis的订阅/发布机制来实现的,客户端先订阅哨兵提供的频道,然后哨兵向频道发送新主节点的IP和端口的信息,客户端就可以拿到这些消息,然后利用这些信息和主节点进行通信

第四步:当旧主节点上线之后,将其变为新主节点的从节点

旧主节点同样使用slave of命令,就变为新主节点的从节点了


整理面经不易,觉得有帮助的小伙伴点个赞吧~感谢收看! 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Servlet---服务端小应用程序(服务器端的小组件)

零.前置知识 1.tomcat—服务器容器 tomcat就是一个服务器容器,通常说的将项目部署到服务器,就是将项目部署到tomcat中(将项目放到tomcat容器中)。 浏览器向服务器发送一个HTTP请求,请求访问demo09.html页面&#xf…

【Linux】进程相关笔记

文章目录查看进程方式批量化注释fork进程状态R状态S状态D状态T状态t状态退出码问题X&&Z状态僵尸进程的危害makefile 新知识孤儿进程查看进程方式 ls /proc ls /proc/13045 (可以查看到之情进程的属性) ps axj | head -1 && ps ajx | grep myprocess(文件名) |…

垃圾回收之CMS、G1、ZGC对比

ZGC(The Z Garbage Collector)是JDK 11中推出的一款低延迟垃圾回收器,它的设计目标包括: 停顿时间不超过10ms;停顿时间不会随着堆的大小,或者活跃对象的大小而增加;支持8MB~4TB级别的堆&#x…

【C++】string类的模拟实现

目录 一、前言 二、模拟实现 1、构造函数 2、拷贝构造函数 3、operator 4、operator[] 5、迭代器 6、string类的比较 7、string类的扩容 7.1、reserve 7.2、resize 8、string类的尾插 8.1、push_back 与 append 8.2、operator 9、string类的insert 9.1、插入字符…

deepin15.11无法正常输入汉字问题的解决

1,起因 本来是sougou输入法 但是由于自己突发奇想 在那瞎折腾 一不小心把配置给弄坏了 就再也回不到之前可以正常打印汉字的状态 历经两个小时的折腾 总算是又能输入汉字啦 耗费两个多小时 对当下的我来说时间成本着实有点高 但是把问题给解决了 总算还是有点收获 平时的学习过…

注意力机制 | CNN-BiLSTM-Attention基于卷积-双向长短期记忆网络结合注意力机制多输入单输出回归预测(Matlab程序)

注意力机制 | CNN-BiLSTM-Attention基于卷积-双向长短期记忆网络结合注意力机制多输入单输出回归预测(Matlab程序) 目录 注意力机制 | CNN-BiLSTM-Attention基于卷积-双向长短期记忆网络结合注意力机制多输入单输出回归预测(Matlab程序)预测结果评价指标基本介绍程序设计参…

qt 编译器 调试器

电脑版本:win10 64位 qt版本:based on Qt 5.14.0(msvc 2017, 32位) Qt Creator 4.11.0 qt安装包:qt-opensource-windows-x86-5.9.9.exe 安装过程一路next,安装完成后,默认使用的…

Spring IoC循环依赖问题

什么是循环依赖 循环依赖其实就是循环引⽤,也就是两个或者两个以上的 Bean 互相持有对⽅,最终形成闭环。⽐如A依赖于B,B依赖于C,C⼜依赖于A。 注意,这⾥不是函数的循环调⽤,是对象的相互依赖关系。循环调…

一个服务端同学的Vue框架入门及实践

做为服务端同学,接触前端代码较少,刚毕业的时候用过 jQuery Bootstrap2/3,当时的感觉就是,容易上手,学习门槛相对较低,另外就是有一个非常成熟的 jQuery 插件库,在这里,几乎可以找到…

vue集成tui.calendar日历组件

vue集成tui.calendar日历组件前言一、简介、效果图二、vue简单集成(集成js版本,没有使用官方的vue2版本)1.引包2.简单示例三、自定义功能1.需求分析、效果展示2.实现思路前言 vue2的集成在git上官方已经给出了demo这里就不贴代码了。本次主要是vue3集成 最近有个功能需要一个日…

重发布实验

基础配置: [r1]int l0 [r1-LoopBack0]ip add 1.1.1.1 24 [r1-LoopBack0]int g0/0/0 [r1-GigabitEthernet0/0/0]ip ad 192.168.12.1 24 [r1-GigabitEthernet0/0/0]int g0/0/1 [r1-GigabitEthernet0/0/1]ip add 192.168.123.1 24 [r1]ospf 1 router-id 1.1.1.1 [r1-o…

自学大数据第12天~Hbase

先留个问题~ERROR: KeeperErrorCode ConnectionLoss for /hbase/master 稍后解决 找到了问题的根因: 查看报错日志 事关tmp文件夹的配置,所以去找一下hbase配置文件中关于这个文件夹的配置项 我的策略是将这个配置项注销掉 然后启动hbase ,之后hmaster就成功启动了; 接着s…

熟练Redis之无处不在的锁

为了保证并发访问的正确性,Redis提供了两种方法,分别是加锁和原子操作 Redis加锁两个问题:一个是,如果加锁操作多,会降低系统的并发访问性能;第二个是,Redis客户端要加锁时,需要用到分布式锁,而分布式锁实…

Coremail奇安信发布2022中国企业邮箱安全性研究:应对ChatGPT带来的安全挑战

日前,广东盈世科技计算机有限公司与奇安信集团联合编写发布《2022中国企业邮箱安全性研究报告》。 报告数据显示:2022年,全国企业邮箱用户共收到各类钓鱼邮件约425.9亿封,相比2021年收到各类钓鱼邮件的342.2亿封增加了24.5%。 一…

华为OD机试用java实现 -【RSA 加密算法】

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:RSA 加密算法 题目 RSA 加密…

【愚人节专场】Java实现定时发送小情话

首先,感谢大佬的帮助~附上大佬的博客以示尊敬https://blog.csdn.net/qq_38591577/article/details/128164308?spm1001.2014.3001.5502 功能实现: 在名为愚人节,实为告白/情人节的日子里,怎么样才能引起TA的关注呢?不…

49天精通Java,第21天,Java内部类,看看文心一言、ChatGPT怎么说

目录文心一言谈Java内部类ChatGPT谈Java内部类下面来聊聊哪吒的见解。一、为什么需要内部类?二、内部类分为四种三、成员内部类1、什么是成员内部类2、代码实例3、成员内部类进阶代码实例4、控制台显示5、外部类访问内部类四、局部内部类五、匿名内部类1、匿名内部类…

Dragonfly 最新正式版本 v2.0.9 已经发布!

作者:戚文博-蚂蚁集团 Dragonfly 最新正式版本 v2.0.9 已经发布!感谢 Dragonfly 的贡献者们,同时也感谢默默支持 Dragonfly 项目的各个公有云团队。欢迎访问 d7y.io [ 1] 网站来了解详情,下面具体介绍 v2.0.9 版本带来了那些更新。…

【Redis】十大数据类型(下篇)

文章目录redis位图(bitmap) --- 底子还是string基本命令图示setbit key offset value setbit 键 偏移位 只能零或者1getbit key offset 查看获取字符串长度 strlen统计key中包含1的个数 bitcount keybitop 统计两个比特key是否都为1技术落地:打卡签到,频…

【C语言蓝桥杯每日一题】——等差数列

【C语言蓝桥杯每日一题】——等差数列😎前言🙌等差数列🙌解题思路分析:😍解题源代码分享:😍总结撒花💞😎博客昵称:博客小梦 😊最喜欢的座右铭&…