searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享

(二)分布式缓存——Redis主从架构

2022-06-29 10:32:06
28
0

分布式缓存——Redis主从架构

一、搭建主从架构:

1、背景:

单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。

在这里插入图片描述

因为Redis在大多情况下都是读多写少的场景, 所以使用主从集群,可以实现它的读写分离,一主多从,多个从节点共同承担读操作,从而提升读的并发能力。

 

2、主从节点搭建:

主从节点搭建以后,主节点可以读和写,从节点只能读不能写。

 

2.1 开启多个Redis服务

在这里插入图片描述

 

2.2 建立这些Redis之间的主从关系:

有临时和永久两种模式:

 

修改配置文件(永久生效),在redis.conf中添加一行配置:

slaveof <masterip> <masterport>

 

使用redis-cli客户端连接到redis服务,执行slaveof命令(重启后失效):

slaveof <masterip> <masterport>

 

2.3 查看结果:

在这里插入图片描述

 

二、主从数据同步原理:

1、 主从同步的第一步——全量同步:

master如何判断slave是不是第一次来同步数据?

replid,是数据集的标记,id一致则说明是同一数据集。每一个master都有唯一的replid,slave则会继承master节点的replid。

offset:偏移量,随着记录在repl_baklog中的数据增多而逐渐增大。slave完成同步时也会记录当前同步的offset。如果slave的offset小于master的offset,说明slave数据落后于master,需要更新。

因此slave做数据同步,必须向master声明自己的replication id 和offset,master才可以判断到底需要同步哪些数据

slave在第一次同步的时候,会向master发送自己的ip,master判断到它的id和自己不一样,则是第一次请求同步数据,需要做全量同步数据。master先把自己的ip和offset返回给slave同步,然后再通过bgsave生成RDB文件,同时记录RDB期间的所有命令,然后把RDB发送给slave同步,再把repl_baklog中的命令发给slave进行同步。

 

在这里插入图片描述

 

2、全量同步的流程:

在这里插入图片描述

 

3、slave重启后的同步——增量同步:

在这里插入图片描述

 

4、优化Redis主从架构:

可以从以下几个方面来优化Redis主从集群:

 

  1. 在master中配置repl-diskless-sync yes启用无磁盘复制,避免全量同步时的磁盘IO。
  2. Redis单节点上的内存占用不要太大,减少RDB导致的过多磁盘IO
  3. 适当提高repl_baklog的大小,发现slave宕机时尽快实现故障恢复,尽可能避免全量同步
  4. 限制一个master上的slave节点数量,如果实在是太多slave,则可以采用主-从-从链式结构,减少master压力

在这里插入图片描述

5、总结:

在这里插入图片描述

————————————————

版权声明:本文为CSDN博主「方方土^_^」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_44792186/article/details/122906564

0条评论
0 / 1000