镜 | 5 个维度深度剖析「主从架构」原理

2022-03-29 00:00:00 命令 节点 复制 主从 缓冲区

为了保证缓存的高可用,我们经常听到采用主从架构来保证高可用,那如何去理解主从架构核心原理呢?

这次我们还是用熟悉的 Redis 缓存来理解主从架构,只要理解了一个主从架构,其他技术的主从架构都是一通百通

Redis 的主从架构,其实就是利用多副本,将一份数据同时保存在多个实例上。单个实例出现故障后,一般都会过一段时间才能恢复,那么其他节点还是可以提供服务的。

本篇我会带着大家一起探讨缓存的主从架构几个问题:

  • Why:为什么需要主从架构?
  • What:主从架构原理?
  • Who:谁需要关心主从架构?
  • When:什么时候用主从架构?
  • Question:主从架构会带来哪些问题?

Why:为什么需要主从架构?

Redis 单机我们都玩得很溜了,那单点架构会带来什么问题?

  • 造成服务雪崩:高并发场景下,Redis 单点故障了,导致请求到 Redis 后都返回错误,或者请求都到数据库了,造成服务雪崩,这是不能接受的。
  • 不能进行快速转移:线上系统,Redis 单点故障了,没有其他的备份节点可用。如何做到故障快速转移?
  • 不能快速恢复数据:Redis 是内存数据库,内存数据会自动备份到 RDB 和 AOF 文件(开启了两种持久化的情况下),当某个节点出现故障时,能将这些备份文件快速恢复到节点,将故障造成的影响降到低。

服务的快速转移和恢复数据,其实是高可用的范畴,我们就可以通过主从架构来做到了。

What:主从架构原理

文中开始也提到过这么一段话,划重点:

Redis 的主从架构,其实就是利用多副本,将一份数据同时保存在多个实例上。单个实例出现故障后,一般都会过一段时间才能恢复,那么其他节点还是可以提供服务的。

主从架构拓扑图

Redis 主从架构其实就是主从库模式,而主从库的模式可以分为三种拓扑结构:一主一从结构、一主多从结构、树状主从结构。而如何去构建这种结构其实也很简单,就是配置下多个节点上 Redis 的配置文件就可以了。如下所示:

slaveof <Master IP> <Master Port>

当然还有一些其他参数配置,就不在本篇讲解,下篇主从的部署教程其实已经写好了,后续发出来。

下面我们接着来看这几种主从架构:

  • 一主一从结构:一个主节点,一个从节点,主节点可读可写,从节点只接收读请求。常用于主节点出现故障时,从节点能够快速顶上。

  • 一主多从结构:一个主节点,多个从节点,对于读命令较大的场景,可以把读命令分摊到多个从节点。

而对于一主多从结构,还可以再扩展一点:当日常开发中需要执行一些比较耗时的读命令时,比如 keyssort等,可以用其中一个从节点专门作为耗时查询用的从节点,避免慢查询对主节点造成阻塞,而影响服务的稳定性。我们也可以用图来进行说明:


相关文章