不懂这些,面试都不敢说自己熟悉Redis

点赞再看,Java进阶一大半

下面这位就是Redis的创始人,他叫antirez,让我们Java开发者又要多学一门Redis的始作俑者。

在这里插入图片描述

我们肯定很难想象Redis创始人竟然学的是是建筑专业,而当年antirez是为了帮网站管理员监控访问者的实时行为才开发的Redis。为啥antirez不用MySQL来开发?MySQL并不适用于实时应用程序,存储数据库需要磁盘读写,大量的数据操作会使网站速度过于缓慢。于是Redis的前身LLOOGG就这样诞生了,后期也发展为了Redis。

大家好,我是南哥。

一个Java学习与进阶的领路人,相信对你通关面试进入心心念念的公司有所帮助。

本文收录在我开源的《Java学习进阶指南》中,涵盖了在大厂工作的Javaer都不会不懂的核心知识、面试重点。相信能帮助到大家在Java成长路上不迷茫,南哥希望收到大家的 ⭐ Star ⭐支持,这是我创作的最大动力。GitHub地址:https://github.com/hdgaadd/JavaProGuide

1. Redis哨兵

1.1 哨兵作用

面试官:Redis哨兵知道吧?

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

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

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

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

那哨兵有什么作用?

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

1.2 检测主从下线状态

面试官:你说说是怎么检测Redis主从服务器的下线状态的?

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

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

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

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

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

在这里插入图片描述

1.3 检测下线状态不一致

面试官:有没有A哨兵判断Redis实例下线,但B哨兵判断Redis实例仍然存活的情况?

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

假如我们的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主服务器吗?

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

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

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

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

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

戳这,《JavaProGuide》作为一份涵盖Java程序员所需掌握核心知识、面试重点的Java学习进阶指南。

在这里插入图片描述

欢迎关注南哥的公众号,公众号里有南哥珍藏整理的大量优秀pdf书籍:Java进阶指南针。

我是南哥,南就南在Get到你的有趣评论➕点赞➕关注。

创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值