3.Redis复制

在分布式系统中为了解决单点为题,通常会把数据复制多个副本部署到其他机器,满足故障恢复和负载均衡等需求。Redis也是如此,它为我们提供了复制功能,实现了相同数据的多个Redis副本。复制功能是高可用Redis的基础,哨兵和集群都是在复制的基础上实现高可用的。

一、拓扑

Redis的复制拓扑结构可以支持单层或多层复制关系,根据拓扑复杂性可以分为以下三种:一主一从、一主多从、树状主从结构。

1.1 一主一从

一主一从结构是最简单的复制拓扑结构,用于主节点出现宕机时从节点提供故障转移支持,如图6-4所示。当应用写命令并发量较高且需要持久化时,可以只在从节点上开启AOF,这样既保证数据安全性同时也避免了持久化对主节点性能的干扰。

image-20240926091319411

1.2 一主多从

一主多从结构使得应用端可以利用多个从节点实现读写分离,如图6-5所示。

  • 对于读占比较大的场景,可以把读命令发送到从节点来分担主节点压力。同时在日常开发中如果需要执行一些比较耗时的读命令,如:keys、sort等,可以在其中一台从节点上运行,防止慢查询对主节点造成阻塞从而影响线上服务的稳定性。
  • 对于写占比较大的场景,多个从节点会导致主节点写命令多次发送从而过度消耗网络带宽,同时也加重了主节点的负载,影响服务的稳定性。

image-20240926092127010

1.3 树状主从结构

树状主从结构使得从节点不但可以复制主节点数据,同时可以作为其他从节点的主节点继续向下层复制。通过引入复制中间层,可以有效降低主节点负载和需要传送给从节点的数据量,如图6-6所示。

image-20240926092348524

二、复制原理

2.1 复制过程

复制过程如图6-7所示。

需要解释的是图里的同步数据集和命令持续复制。

同步数据集:主从复制连接正常通信后,对于首次建立复制的场景,主节点会把持有的数据全部发送给从节点,这部分是耗时最长的步骤。在这里的同步数据集可以划分两种情况:全量同步和部分同步。

命令持续复制:当主从节点把当前的数据同步给从节点后,便完成了复制的建立流程。接下来主节点会持续地把写命令发送给从节点,保证主从数据一致性

image-20240926092753594

2.2 全量复制

一般用于初次复制场景,Redis早期支持的复制功能只有全量复制,它会把主节全部数据一次性发送给从节点,当数据量较大时,会对主节点和网络造成很大的开销。

全量复制时主节点会生成一个RDB文件,然后发送给从节点。

2.3 部分复制

用于处理在主从复制中因网络闪断等原因造成的数据丢失场景,当从节点再次连上主节点后,如果条件允许,主节点会补发丢失数据给从节点。因为补发的数据远远小于全量数据,可以有效避免全量复制的过高开销。

部分复制主要是靠主节点和从节点的偏移量实现。

缺点

单点故障

读写分离存在主从问题问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值