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

分布式缓存——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、总结:

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值