Redis重要知识点:哨兵是什么?哨兵如何选择Redis主服务器

news2024/9/20 6:28:09

引言

  哨兵贼简单,就是一个节点去看守领一个节点有没有挂掉,挂掉的数量比较多那得新选主节点了。

1. Redis哨兵

1.1 哨兵作用

哨兵的含义是什么?我们来看看百度百科的解释。

哨兵,汉语词语,是指站岗、放哨、巡逻、稽查的士兵

Redis主从架构也有自己的哨兵,名为Sentinel。Sentinel是什么含义,我们看看英文含义,很遗憾这个英文起名没有什么故事可讲,英文意思还是哨兵。

Redis哨兵本质是一个运行在特殊模式下的Redis服务器,并不是特殊要另外部署的服务模块。哨兵可以是一个,如果公司资金充足的话,部署由多个Sentinel实例组成的哨兵系统也是可以的。

那哨兵有什么作用?

它的主要作用是通过检测Redis主从服务器的下线状态,选举出新Redis主服务器,也就是故障转移,来保证Redis的高可用性。

1.2 检测主从下线状态

我们先来讲讲哨兵最重要的第一个功能,检测Redis主从服务器下线状态,后面我们再来讲讲故障转移。

哨兵检测主从服务器下线状态有两种方式,分为主观和客观,我们可以给哨兵配置其中一种。

(1)检测主观下线状态:默认情况Sentinel会每隔 1 s向Redis主、从服务器发送PING命令,通过PING命令返回的信息来判断Redis主从服务器的下线状态。

(2)检测客观下线状态:Sentinl在主观判断下线后,会向其他Sentinel进行询问是否同意该节点已下线,当标记下线的数量足够多就会判断客观下线。

下面是哨兵们和Redis主从服务器之间藕断丝连的关系。

1.3 检测下线状态不一致

各个哨兵的配置对检测下线的配置不同,可能会产品奇奇怪怪的问题,大家要注意下。

假如我们的A、B两个哨兵配置的是检测主观下线状态,哨兵会判断Redis实例进入主观下线所需的响应时间长度

胡广假设A哨兵的配置是10000毫秒、B哨兵是50000毫秒,但此时Redis实例要在20000毫秒才响应,像这种情况就会发生A哨兵判断Redis实例下线,但B哨兵判断Redis实例仍然存活的情况。

2. 哨兵选举

2.1 选举领头哨兵

大家注意不要把领头哨兵和Redis主服务器弄混淆了,不然可就尴尬了哈。

胡广先说说领头哨兵的作用,免得大家误解。领头Sentinel起到执行故障转移的作用,也就是选举出新的Redis主服务器,而且只有当Redis主服务器被判断客观下线后才会选举出领头Sentinel。

那领头哨兵要怎么选择出来呢?选举出这个天选之子。

Sentinel哨兵设置局部领头Sentinel的规则是先到先得

最先向目标Sentinel发送设置要求的源Sentinel将成为目标Sentinel的局部领头Sentinel,而之后接收到的所有设置要求都会被目标Sentinel拒绝。

如果有某个Sentinel被半数以上的Sentinel设置成了局部领头Sentinel,那么这个Sentinel就会成为领头Sentinel。

2.2 选举Redis主服务器

看到这,我来和大家讲讲哨兵最重要的第二个功能:选举出新的Redis主服务器。

(1)领头Sentinel会将已下线Redis主服务器的所有Redis从服务器保存到一个列表里面。

(2)通过删除策略,删除所有处于下线或者断线状态的、删除最近五秒内没有回复过领头Sentinel命令的、删除与已下线主服务器连接断开超过10毫秒的。

(3)如果有多个相同优先级的从服务器,将按照复制偏移量进行排序选出偏移量最大的,复制偏移量最大也就是数据同步最新的。

(4)最后选出的Redis实例也就成为新的Redis主服务器。

结束啦

 你好,我是胡广。 致力于为帮助兄弟们的学习方式、面试困难、入职经验少走弯路而写博客 🌹🌹🌹 坚持每天两篇高质量文章输出,加油!!!🤩

 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 😄 (^ ~ ^) 。想看更多 那就点个关注     吧 我会尽力带来有趣的内容 。

 😎感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以      给我留言咨询,希望帮助更多的人

更多专栏:
📊 Java设计模式宝典:从入门到精通(持续更新)

📝 Java基础知识:GoGoGo(持续更新)

⚽ Java面试宝典:从入门到精通(持续更新)

🌟 程序员的那些事~(乐一乐)

🤩 Redis知识、及面试(持续更新)

🚀 Kafka知识文章专栏(持续更新)

🎨 Nginx知识讲解专栏(持续更新)

📡 未完待续。。。

🎯 未完待续。。。

🔍 未完待续。。。

感谢订阅专栏 三连文章

 

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

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

相关文章

关于less的基本使用

1、介绍及概述 1.1、解释 less 是方便开发人员书写CSS的一门预处理语言。浏览器只认识html /css /js格式的文件,所以直接引入.less文件,没有任何的效果,需要把less文件转换成css文件 1.2、概述 CSS弊端: 没有逻辑性、变量、函…

【Paper Reading】结合 NanoFlow 研究,优化大语言模型服务效率的探索

作者 王伟 PAI引擎团队 近年来,人工智能领域的快速发展推动了大型语言模型的广泛应用,随之而来的是对其服务效率的迫切需求。论文《NanoFlow:Towards Optimal Large Language Model Serving Throughput》提出了一种突破性的新型服务框架&…

刚接触无处下手?水下航行器AUV/UUV六自由度模型/控制器设计matlab/simulink参考代码,基础的/进阶的,入门到顺利毕业/完成课题/发表论文。

导师不管?无人指导?无代码可参考?毫无头绪?换条思路借鉴一下吧,金钱买不到时间,但可以让你更多的支配你自己的时间,没错的,条条大路通罗马,毕竟前程是自己的,…

时序必读论文11|ICLR23 TimesNet时间序列分析的二维变化建模

论文标题:TEMPORAL 2D-VARIATION MODELING FOR GENERAL TIME SERIES ANALYSIS 开源代码:https://github.com/Thinklab-SJTU/Crossformer 前言 时间序列分析中,如何有效地建模时序数据中的时间变化是关键,然而直接从一维时序数据…

css <样式一>

1. 盒子模型 1.1>boarder 在这里插入图片描述 boarder 相邻框合并问题 boarder-classpse 相同的边框会合并在一起 text-alicn center 文字居中对齐 ########### boarder 会撑大盒子的实际大小 一个盒子加了boarder之后会变大的我可以把我的盒子内容进行修改, 减少像素内…

细胞分裂检测系统源码分享

细胞分裂检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

大数据Flink(一百二十):Flink SQL自定义函数(UDF)

文章目录 Flink SQL自定义函数(UDF) 一、概述 二、​​​​​​​自定义标量函数(UDSF) 三、​​​​​​​​​​​​​​自定义聚合函数(UDAF) 四、 ​​​​​​​​​​​​​​自定义表值函数(UDTF) Flink SQL自定义函数…

re题(20)BUUCTF [GWCTF 2019]pyre

BUUCTF在线评测 (buuoj.cn) Python解包及反编译: PyInstaller Extractoruncompyle6 - 知乎 (zhihu.com) python撤消: Pycharm撤销操作和代码跳转后退回操作以及消除波浪线操作快捷键_pycharm怎么反撤销-CSDN博客 把.pyc文件变成py文件 把.py文件用记事本打开 cod…

supermap iclient3d for cesium模型沿路径移动

可以直接settimeout隔一段时间直接设置位置属性,但是得到的结果模型不是连续的移动,如果想要连续的移动,就需要设置一个时间轴,然后给模型传入不同时间时的位置信息,然后就可以了。 开启时间轴 let start Cesium.Jul…

负载均衡:从理论到实践 ---day04

负载均衡 负载均衡1.什么是负载均衡2.负载均衡的分类硬件负载均衡软件负载均衡选择 3.引入负载均衡的好处 第一个Ribbon实例步骤1:步骤2:步骤3:步骤4: 问题1. 负载均衡的主要目标是什么?2. 负载均衡器的作用是什么&…

【云岚到家-即刻体检】-day07-2-项目介绍及准备

【云岚到家-即刻体检】-day07-2-项目介绍及准备 1 项目介绍1)项目简介2)界面原型3)实战目标 2 搭建实战环境1)服务端2)管理端前端工程3)用户端前端工程4)测试 3 熟悉项目代码1)接口文…

Linux操作系统面试题记录

一、进程与线程 1.并发和并行的区别 并发:一个cpu处理器处理多个任务; 并行:多个cpu处理器处理多个任务; 2.进程和线程是什么?区别?何时用线程何时用进程? Linux中其实没有进程线程之分&…

面试官:讲一讲Spring MVC源码解析

好看的皮囊千篇一律、有趣的灵魂万里挑一 文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。…

驱动器磁盘未格式化恢复实战

驱动器磁盘未格式化的深度剖析 在日常的数字生活中,驱动器作为数据存储的重要载体,承载着用户无数的珍贵资料。然而,当遇到“驱动器中的磁盘未被格式化”的提示时,这份平静往往会被瞬间打破。这一状况不仅让用户感到困惑和焦虑&a…

JZ2440开发板——S3C2440的UART的使用

以下内容源于韦东山课程的学习与整理,如有侵权请告知删除。 一、UART硬件简介 UART,全称是“Universal Asynchronous Receiver Transmitter”,即“通用异步收发器”,也就是我们日常说的“串口”。 它在嵌入式中用途非常广泛&…

LabVIEW提高开发效率技巧----VI服务器和动态调用

VI服务器(VI Server)和动态调用是LabVIEW中的两个重要功能,可以有效提升程序的灵活性、模块化和可扩展性。通过这两者的结合,开发者可以在运行时动态加载和调用VI(虚拟仪器),实现更为复杂的应用…

【 html+css 绚丽Loading 】 000052 璇玑转轮

前言:哈喽,大家好,今天给大家分享今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 &#x1f…

实时数仓3.0DWD层

实时数仓3.0DWD层 DWD层设计要点:9.1 流量域未经加工的事务事实表9.1.1 主要任务9.1.2 思路9.1.3 图解9.1.4 代码 9.2 流量域独立访客事务事实表9.2.1 主要任务9.2.2 思路分析9.2.3 图解9.2.4 代码 9.3 流量域用户跳出事务事实表9.3.1 主要任务9.3.2 思路分析9.3.3 …

全面掌握 Jest:从零开始的测试指南(下篇)

在上一篇测试指南中,我们介绍了Jest 的背景、如何初始化项目、常用的匹配器语法以及钩子函数的使用。这一篇篇将继续深入探讨 Jest 的高级特性,包括 Mock 函数、异步请求的处理、Mock 请求的模拟、类的模拟以及定时器的模拟、snapshot 的使用。通过这些技…

办了房屋抵押经营贷,空壳公司不怕被查吗?续贷不上怎么办?

很多有房的朋友,想必都办理过抵押经营贷款。但是,当办完房屋抵押经营贷款之后,钱到手了,别光顾着乐呵,贷后管理可是门大学问,稍有不慎,麻烦就找上门了。咱得确保资金用得对路,征信亮…