目录

1、真实企业配置

2、什么是主从复制

2.1、Redis为什么需要主从复制?

2.2、主从复制的好处

2.3、主从复制的缺点

3、主从复制几种方式及流程

3.1、全量复制的流程

3.2、增量复制流程

3.3、断点续传流程

3.4、无磁盘化复制流程

4、主从复制会出现的问题及解决方案

4.1、怎么减少save基于旧的数据版本对外提供服务


下一篇:redis哨兵模式

1、真实企业配置

常见的做法是将Redis集群与主从复制结合使用,同时使用哨兵模式(监控和故障转移),这种组合可以实现数据分片、数据复制、读写分离以及自动故障转移的功能。

(1)小规模应用。

不使用集群、主从、哨兵:使用单个Redis实例,不进行分片和复制。

(2)中等规模应用

使用主从+哨兵:使用Redis主从复制来实现数据的复制和读写分离,一主多从,同时使用Redis哨兵监控主从复制架构中的节点,并实现自动故障转移。

(3)大规模应用

使用集群+主从+哨兵

--使用Redis集群来实现数据的分片和自动故障转移。将数据分布到多个节点上,可以提高存储容量和吞吐量;

--使用Redis主从复制来实现数据的复制和读写分离;

--使用Redis哨兵监控集群中的节点,并实现自动故障转移。

总结:从上面配置可以知道,主从模式---数据的复制和读写分离、哨兵模式--自动故障转移、集群模式--数据的分片、自动故障转移,提高存储和吞吐量

2、什么是主从复制

实现数据的复制和读写分离。配置一主(master)多从(slave),主节点负责接收写操作,并将写操作的日志(AOF或RDB文件)发送给从节点,并将数据复制到从节点上;从节点通过执行这些日志来复制主节点的数据,从节点处理读操作。

当主从服务器刚建立连接的时候,进行全量同步;全量复制结束后,进行增量复制。

2.1、Redis为什么需要主从复制?

单台Redis节点存在以下的局限性:

  • 单节点的Redis能够支撑QPS大概在5w左右,千万级并发会成为了高并发的瓶颈;
  • 单节点的Redis不能保证高可用;
  • CPU的利用率上,单台Redis实例只能利用单个核心

2.2、主从复制的好处

  • 数据冗余:主从复制实现了数据的热备份;
  • 故障恢复:如果master宕掉了,使用哨兵模式,提升一个 slave 作为新的 master,实现故障转移、高可用;
  • 负载均衡:可以轻易地实现横向扩展,实现读写分离,一个 master 用于写,多个 slave 用于分摊读的压力,从而实现高并发。

2.3、主从复制的缺点

所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave服务器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。

怎么解决?

  • 增加Master服务器的硬件资源;
  • 增加Slave服务器数量,可以将负载分散到多个Slave上,减少单个Slave的压力,从而减少延迟

3、主从复制几种方式及流程

3.1、全量复制的流程

Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。

  • save服务器连接到master服务器,便开始进行数据同步,发送psync命令;
  • master服务器收到psync命令之后,开始执行bgsave命令生成RDB快照文件并使用缓存区记录此后执行的所有写命令;
  • master服务器bgsave执行完之后,就会向所有Slava服务器发送快照文件,并在发送期间继续在缓冲区内记录被执行的写命令;
  • slave服务器收到RDB快照文件后,会将接收到的数据写入磁盘,然后清空所有旧数据,在从本地磁盘载入收到的快照到内存中,同时基于旧的数据版本对外提供服务;
  • master服务器发送完RDB快照文件之后,便开始向slave服务器发送缓冲区中的写命令;
  • slave服务器完成对RDB快照的载入,开始接收命令请求,并执行来自主服务器缓冲区写命令
  • 如果slave node开启了AOF,那么会立即写AOF

为什么有本地缓存了还要用redis 本地缓存 redis_主从复制

3.2、增量复制流程

在初始化的全量复制并开始正常工作之后,master服务器将发生的写操作同步到slave服务器过程

3.3、断点续传流程

slave与master能够在网络连接断开重连后,只从中断处继续进行复制,而不必重新同步

3.4、无磁盘化复制流程

由master直接开启一个socket,在内存中创建RDB文件,再将rdb文件发送给slave服务器,不使用磁盘作为中间存储。

  • repl-diskless-sync :是否开启无磁盘复制

4、主从复制会出现的问题及解决方案

4.1、怎么减少save基于旧的数据版本对外提供服务

只能减少不能避免,需要结合监控和故障回复机制。

  • 使用非阻塞模式(异步模式);
  • slave服务器的配置文件中设置`repl-diskless-sync`参数为`yes`,表示Slave服务器在初始同步时不会将数据写入磁盘,而是直接从Master服务器内存中读取数据