Redis是如何保证高可用的?

Redis这种基于内存的关系型数据库我们在选用的时候就是考虑到它的快。而且可以很方便的实现诸如分布式锁、消息队列等功能。

笔者在前一段秋招面试的时候就被提问,"Redis是怎么保证高可用的?" 后续的子问题包含,集群模式是怎么实现的? 哨兵模式又是怎样工作的? 哨兵的存在是怎么保证其他节点正常运行的? 如果哨兵自己宕机了,整个系统又怎么样?


怎么保证高可用?

Redis可以通过主从复制的方式来实现高可用。主节点负责处理客户端的请求,从节点负责复制主节点的数据,如果主节点出现故障,从节点可以接管主节点的工作,从而保证服务的可用性。

集群模式是怎么实现的?

Redis的集群模式是通过将多个Redis实例组织成集群来实现的,每个实例都可以充当主节点或从节点。集群模式解决的问题是提高Redis服务的可用性,使得在主节点出现故障时,可以自动将从节点升级为主节点,从而保证服务的可用性。

哨兵模式是什么? 哨兵模式是怎样组织与工作的?

哨兵模式是一种基于规则的自动化管理系统,用于监控Redis实例的状态,并在需要时自动进行故障转移。在哨兵模式下,Redis会创建一个或多个哨兵实例,这些实例会定期检查Redis实例的状态,并在检测到故障时自动将从节点升级为主节点,从而保证服务的可用性。

哨兵模式下的故障细分为两种情况:

当哨兵节点自己故障时,它会从其他哨兵节点或主节点获取状态信息,如果检测到主节点故障,它会尝试将从节点升级为主节点。如果升级成功,哨兵节点会将故障的主节点从集群中移除,并将其从节点设置为新的主节点。 当哨兵节点检测到主节点故障时,它会尝试将从节点升级为主节点。如果升级成功,哨兵节点会将故障的主节点从集群中移除,并将其从节点设置为新的主节点。此时,客户端可以继续向新的主节点发送请求,从而保证服务的可用性。

且这里仍然需要补充哨兵如何判断节点发生故障或判定下线:

涉及两个新的概念**:主观下线和客观下线。**

**1. 主观下线:**一个哨兵节点判定主节点down掉是主观下线。

**2.客观下线:**只有半数哨兵节点都主观判定主节点down掉,此时多个哨兵节点交换主观判定结果,才会判定主节点客观下线。

**3.原理:**基本上哪个哨兵节点最先判断出这个主节点客观下线,就会在各个哨兵节点中发起投票机制Raft算法(选举算法),最终被投为领导者的哨兵节点完成主从自动化切换的过程。


参考资料

图解Redis介绍 | 小林coding

2020-01-25:redis中,哨兵如何选举?-腾讯云开发者社区-腾讯云

最近在看redis,花了点时间整理了一下学习内容,都是一些基础,想学的可以看下 - 『编程语言区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

Redis哨兵、复制、集群的设计原理与区别 - 知乎

相关推荐
WikiLeake13 分钟前
一个健壮且灵活的大语言模型(LLM)API 配置加载器
数据库·人工智能
瑞克-桑切斯2 小时前
企业生产环境:https部署+nginx高可用(业务不中断)
linux·服务器·数据库
zyseo810 小时前
谷歌SEO 准首页词挖掘脚本:找出排在第 8-20 名的隐藏流量
大数据·数据库·人工智能
xiaogai_gai12 小时前
仅查询策略实战:从金蝶云·星空旗舰版定时拉取收料通知单
大数据·数据库·python
数据工匠老o13 小时前
异构数据库DDL同步:260条链路的结构变更自动适配方案
数据库·架构
这个DBA有点耶14 小时前
银行业市占率最高的国产数据库是谁?先搞清楚“市占率”的四种口径
数据库·程序员·架构
用户62799471826214 小时前
南大通用GBase 8a之基于审计日志的冷温热数据分析
数据库
数据库小学妹14 小时前
数据库运维五级成熟度:监控、备份、高可用怎么串起来
运维·数据库·监控
一个天蝎座的程序猿14 小时前
为了给报表提速,我把金仓KES的列存储折腾了个遍:聊聊KES的技术能力
数据库
飞越未来云城的霓虹飞猪14 小时前
AI 数据库地图:从 PostgreSQL 到向量数据库,一次看懂 AI 时代的数据底座
数据库