Redis主从架构

为什么引入主从

单机的 redis,能够承载的QPS大概就在上万到几万不等。对于緩存来说,一般都是用来支撑读高并发的。因此架构做成主从 (master- slave}架构,一主多从,主负责写,并且将数据复制到其它的 slave节点,从节点负责读。所有的读请求全部走从节点。这样也可以很轻松实现水平扩容,支撑读高并发。
在这里插入图片描述

redis replication->主从架构->读写分离->水平扩容支撑读高并发

redis replication的核心机制

  • redis采用异步方式复制数据到 slave节点,不过reds2.8开始,slave node会周期性地确认自己每次复制的数据量;
  • 一个 master node是可以配置多个 slave node的;
  • slave node也可以连接其他的 slave node;
  • slave node做复制的时候,不会 block master node的正常工作
  • slave node在做复制的时候,也不会 block对自己的查询操作,它会用旧的数据集来提供服务;
  • 但是复制完成的时候,需要删除旧数据集,加载新数据集,这个时候就会暂停对外服务了;
  • slave node主要用来进行横向容,做读写分离,扩睿的 slave node可以提高读的吞吐量。

注意,如果采用了主从架构,那么建议必须开启 master node的持久化,不建议用 slave node作为 master node的数据热备,因为那样的话,如果你关掉master的持久化,可能在 master宕机重启的时候数据是空的,然后可能一经过复制slave node的数据也丢了。

另外, master的各种备份方案,也需要做。万一本地的所有文件丢失了,从备份中挑选一份rdb去恢复 master,这样才能确保启动的时候,是有数据的,即使采用了后续讲解的高可用机制, slave node可以自动接管 master node,但也可能 sentinel还没检测到 master failure, master node就自动重启了,还是可能导致上面所有的 slave node数据被清空。

redis 主从复制核心原理

  1. 当启动一个 slave node的时候,它会发送一个PSYNC命令给 master node
  2. 如果这是 slave node初次连接到 master node,那么会触发一次fullresynchronization全量复制。
  3. 此时 master会启动一个后台线程,开始生成一份RDB快照文件
  4. 同时还会将从客户端 client新收到的所有写命令缓存在內存中。
  5. RDB文件生成完毕后, master会将这个RDB发送给slave,slave会先写入本地磁盘,然后再从本地磁盘加载到内存中
  6. 接着 master会将内存中緩存的写命令发送到 slave, slave也会同步这些数据。
  7. slave node如果跟 master node有网络故障,断开了连接,会自动重连,连接之后 master node仅会复制给 slave部分缺少的数据
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值