【面试官】听说你精通Redis?来说说Redis哨兵
- 面试官:Redis哨兵知道吧?
- 面试官:嗯然后呢?
- 面试官:你说说是怎么检测Redis主从服务器的下线状态的?
- 面试官:有没有A哨兵判断Redis实例下线,但B哨兵判断Redis实例仍然存活的情况呢?
- 面试官:领头哨兵怎么选举出来的?
- 面试官:选举出来之后呢,它有什么作用吗?
- 面试官:知道怎么选举新的Redis主服务器吗?
- 🌱以贴近现实的【面试官面试】形式帮助大家系统学习后端技术
- 📚本期是《Redis系列》,其他系列博客请订阅专栏《后端训练营》
- ❤创作不易,不妨点赞、收藏、关注支持一下
文章目录
- Redis哨兵
- 哨兵作用
- 检测主从下线状态
- 哨兵配置
- 选举领头哨兵
- 领头哨兵的作用
- 选举Redis主服务器
1. Redis哨兵
面试官:Redis哨兵知道吧?
知道的,Sentinel哨兵本质是一个运行在特殊模式下的Redis服务器。
面试官思考中…
1.1 哨兵作用
面试官:嗯然后呢?
emmmm。Sentinel哨兵可以是单个节点或是多个节点组成的哨兵系统。
它的主要作用是通过检测Redis主从服务器的下线状态,选举出新Redis主服务器,也就是故障转移,来保证Redis的高可用性。
面试官思考中…
1.2 检测主从下线状态
面试官:你说说是怎么检测Redis主从服务器的下线状态的?
好的面试官。检测下线状态有两种方式。
- 检测主观下线状态的话,默认情况Sentinel会每隔1s向Redis主、从服务器发送PING命令,通过返回的信息来判断下线状态
- 检测客观下线状态的话,是Sentinl在主观判断下线后,会向其他Sentinel进行询问是否同意该节点已下线,当标记下线的数量足够多就会判断客观下线
面试官思考中…
1.3 哨兵配置
面试官:有没有A哨兵判断Redis实例下线,但B哨兵判断Redis实例仍然存活的情况呢?
有的面试官,主要还是看各个哨兵的配置。
像检测主观下线状态的话,要看Sentinel判断Redis实例进入主观下线所需的响应时间长度。A哨兵的配置是10000毫秒、B哨兵是5000毫秒,但Redis实例要在20000毫秒才响应,像这种情况就会发生。
而检测客观下线状态的话,要看配置需要其他Sentinel同意主服务器已下线的数量。
面试官思考中…
1.4 选举领头哨兵
面试官:领头哨兵怎么选举出来的?
是这样的,Sentinel设置局部领头Sentinel的规则是先到先得。
最先向目标Sentinel发送设置要求的源Sentinel将成为目标Sentinel的局部领头Sentinel,而之后接收到的所有设置要求都会被目标Sentinel拒绝。
如果有某个Sentinel被半数以上的Sentinel设置成了局部领头Sentinel,那么这个Sentinel就会成为领头Sentinel。
面试官思考中…
1.5 领头哨兵的作用
面试官:选举出来之后呢,它有什么作用吗?
领头Sentinel主要是执行故障转移,也就是选举出新的Redis主服务器,而且只有当Redis主服务器被判断客观下线后才会选举出领头Sentinel。
面试官思考中…
2. 选举Redis主服务器
面试官:知道怎么选举新的Redis主服务器吗?
哦哦我整理下。
- 领头Sentinel会将已下线Redis主服务器的所有Redis从服务器保存到一个列表里面
- 通过删除策略,删除所有处于下线或者断线状态的、删除最近五秒内没有回复过领头Sentinel命令的、删除与已下线主服务器连接断开超过10毫秒的
- 如果有多个相同优先级的从服务器,将按照复制偏移量进行排序选出偏移量最大的,复制偏移量最大也就是数据同步最新的
- 最后选出的Redis实例也就成为新的Redis主服务器
面试官抓抓脑袋,继续看你的简历......
emmmm,得想想考点你不懂的
未完待续。。。
好了,今天的分享就先到这,我们下期《Redis系列》继续。
#大厂面试##Java面试##Redis面试##Redis##大厂#🌱以贴近现实的【面试官面试】形式帮助大家系统学习后端技术,其他系列博客请订阅专栏《后端训练营》
创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️
👉以贴近现实的【面试官面试】形式帮助你系统学习后端技术 👉成体系知识帮你在后端进阶,每一道问答助你怒怼大厂面试官,收获大厂offer 👉《后端训练营》包含Redis系列、MySQL系列、Kafka系列、ZooKeeper系列、JVM系列、多线程系列等等 👉制作不易,各位的支持是我创作的最大动力