Redis主从复制原理详解 。小编来告诉你更多相关信息 。
Redis主从复制原理详解小编为大家说一说Redis主从复制原理详解的相关话题,如有不对的地方欢迎指正!
众所周知,一个数据库系统想要实现高可用,主要从以下两个方面来考虑:
- 保证数据安全不丢失
- 系统可以正常提供服务
上期我们提到的 Redis 持久化策略,其实就是为了减少服务宕机后数据丢失 , 以及快速恢复数据,也算是支持高可用的一种实现 。
除此之外,Redis 还提供了其它几种方式来保证系统高可用,业务中最常用的莫过于主从同步(也称作主从复制)、Sentinel 哨兵机制以及 Cluster 集群 。
同时 , 这也是面试中出现频率最高的几个主题 , 这期我们先来讲讲 Redis 的主从复制 。
2. 主从复制简介Redis 同时支持主从复制和读写分离:一个 Redis 实例作为主节点
Master
,负责写操作 。其它实例(可能有 1 或多个)作为从节点
Slave
,负责复制主节点的数据 。2.1 架构组件
文章插图
主节点Master数据更新:Master 负责处理所有的
写操作
,包括写入、更新和删除等 。【Redis主从复制原理详解】数据同步:写操作在 Master 上执行,然后 Master 将写操作的结果
同步到所有从节点 Slave
上 。从节点Slave数据读?。篠lave 负责处理
读操作
,例如获取数据、查询等 。数据同步:Slave 从 Master 复制数据,并在本地保存一份与主节点相同的
数据副本
。2.2 为什么要读写分离1)防止并发从上图我们可以看出 , 数据是由主节点向从节点单向复制的 , 如果主、从节点都可以写入数据的话 , 那么数据的一致性如何保证呢?
有聪明的小伙伴可能已经想到了,那就是加锁!
但是主、从节点分布在不同的服务器上,数据跨节点同步时又会出现分布式一致性的问题 。而在高频并发的场景下,解决加锁后往往又会带来其它的分布式问题 , 例如写入效率低、吞吐量大幅下降等 。
而对于 Redis 这样一个高效缓存数据库来说,性能降低是难以忍受的,所以加锁不是一个优秀的方案 。
那如果不加锁,使用最终一致性方式呢?
这样 Redis 在主、从库读到的数据又可能会不一致,带来业务上的挑战,用户也是难以接受的 。
业务为用户服务,技术为业务服务 。
所以,为了权衡数据的并发问题和用户体验,我们只允许在主节点上写入数据,从节点上读取数据 。
Redis主从复制原理详解 。小编来告诉你更多相关信息 。
Redis主从复制原理详解2)易于扩展我们都知道,大部分使用 Redis 的业务都是读多写少的 。所以,我们可以根据业务量的规模来确定挂载几个从节点
Slave
, 当缓存数据增大时,我们可以很方便的扩展从节点的数量,实现弹性扩展 。同时,读写分离还可以实现数据备份和负载均衡 , 从而提高可靠性和性能 。
3)高可用保障不仅如此,Redis 还可以手动切换主从节点 , 来做故障隔离和恢复 。这样,无论主节点或者从节点宕机,其他节点依然可以保证服务的正常运行 。
3. 主从复制实现3.1 开启主从复制要开启主从复制,我们需要用到
replicaof
命令 。当我们确定好主节点的 IP 地址和端口号,在从库执行 replicaof 这个命令,就可以开启主从复制 。
注意,在 Redis5.0 之前,该命令为开启主从复制后 , 应用层采用读写分离,所有的写操作在主节点进行,所有读操作在从节点进行 。slaveof
主从节点会保持数据的最终一致性:主库更新数据后,会同步给从库 。
3.2 主从复制过程那主从库同步什么时候开始和结束呢?
是一次性传输还是分批次写入?Redis 主从节点在同步过程中网络中断了,没传输完成的怎么办?
带着这些疑问我们来分析下,首先 , Redis 第一次数据同步时分 3 个阶段 。
文章插图
1)建立连接,请求数据同步主从节点建立连接,从库请求数据同步 。
从服务器从
replicaof
- 无格式粘贴快捷键设置方法 EXCEL无视格式复制粘贴
- 有哪些架构 什么是数据复制
- MySQL数据库复制的主要特点
- MySQL复制和组复制的主要区别
- MySQL数据库组复制有什么特点
- MySQL:深入解析Binlog复制技术
- 提取文件名称和路径 win7批量复制文件路径
- u盘管理软件哪个好 u盘加密防复制的app介绍
- 筛选状态下如何批量复制粘贴 Excel不连续区域的复制粘贴
- 如何全选文件夹的文件 电脑全选文件夹的复制