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

引言

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

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知识讲解专栏(持续更新)

📡 未完待续。。。

🎯 未完待续。。。

🔍 未完待续。。。

感谢订阅专栏 三连文章

相关推荐
研究是为了理解24 分钟前
Git Bash 常用命令
git·elasticsearch·bash
DKPT1 小时前
Git 的基本概念和使用方式
git
ketil271 小时前
Ubuntu 安装 redis
redis
王佑辉2 小时前
【redis】redis缓存和数据库保证一致性的方案
redis·面试
Karoku0663 小时前
【企业级分布式系统】Zabbix监控系统与部署安装
运维·服务器·数据库·redis·mysql·zabbix
gorgor在码农3 小时前
Redis 热key总结
java·redis·热key
想进大厂的小王3 小时前
项目架构介绍以及Spring cloud、redis、mq 等组件的基本认识
redis·分布式·后端·spring cloud·微服务·架构
Java 第一深情3 小时前
高性能分布式缓存Redis-数据管理与性能提升之道
redis·分布式·缓存
Winston Wood4 小时前
一文了解git TAG
git·版本控制
喵喵先森4 小时前
Git 的基本概念和使用方式
git·源代码管理