Redis系列(一):Redis架构演进

本文详述Redis从单实例到集群模式的架构演进,重点解析主从复制、PSYNC部分同步机制及Sentinel高可用解决方案,阐述其如何解决数据冗余与故障转移问题。

Redis的架构是逐步演进的,从最初的单实例,到目前集群模式,我们可以看下整个演进过程,

主从复制

单个Redis实例的能力有限,在Redis的大多数使用场景下,都是读请求多于写请求,因此通过增加实例作为只读的从节点,不仅可以扩展Redis处理读请求的能力,还能做到数据冗余。
通过SLAVEOF,Redis可以指定一个实例为slave,同步另一个实例(master)的数据。同步过程如下,

SYNC

SYNC的过程
SYNC的过程,

  1. 当slave初次复制或者断线后重复制,向master发送SYNC命令
  2. master接到SYNC命令,执行BGSAVE,在后台生成一个RDB文件,同时把这段时间的写命令存储在缓冲区中
  3. BGSAVE执行完成,master把生成的RDB文件发送给slave。slave接收到RDB文件后进行载入
  4. master把缓冲区中的写命令发送给slave,salve执行写命令确保数据与master保存一致

注:在进行主从复制的过程中,不会影响master继续对外提供服务,因为BGSAVE并不会阻塞实例(和SAVE不同),这里可能会有疑问的是如果再生成RDB文件时,外部服务对master发送了写命令,是否会影响RDB文件的生成。答案是不会,Redis采用了COW来进行写时复制,感兴趣的可以详细了解下(有时间我也会单独写一篇文章介绍下COW)。

问题:

  • 每次复制都是全量复制,效率很低。主要是断线重连,slave可能只是确保一小部分数据,不得不全量复制。

PSYNC

为了解决SYNC的效率问题,Redis 2.8开始提供了PSYNC。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值