当前位置:网站首页>【Redis】主从复制的核心原理
【Redis】主从复制的核心原理
2022-08-09 02:30:00 【超级码里喵】
Redis 主从架构
单机的 redis,能够承载的 QPS 大概就在上万到几万不等。对于缓存来说,一般都是用来支撑读高并发的。因此架构做成主从(master-slave)架构,一主多从,主负责写,并且将数据复制到其它的slave 节点,从节点负责读。所有的读请求全部走从节点。这样也可以很轻松实现水平扩容,支撑读高并发。
redis replication -> 主从架构 -> 读写分离 -> 水平扩容支撑读高并发
redis replication 的核心机制
- redis 采用异步方式复制数据到 slave 节点,不过 redis2.8 开始,slave node 会周期性地确认自己每次复制的数据量;
- 一个 master node 是可以配置多个 slave node 的;
- slave node 也可以连接其他的 slave node;
- slave node 做复制的时候,不会 block master node 的正常工作;
- slave node 在做复制的时候,也不会 block 对自己的查询操作,它会用旧的数据集来提供服务;但是复制完成的时候,需要删除旧数据集,加载新数据集,这个时候就会暂停对外服务了;
*slave node 主要用来进行横向扩容,做读写分离,扩容的 slave node 可以提高读的吞吐量。
注意:
- 如果采用了主从架构,那么建议必须开启 master node 的持久化,不建议用 slave node 作为master node 的数据热备,因为那样的话,如果你关掉 master 的持久化,可能在 master 宕机重启的时候数据是空的,然后可能一经过复制, slave node 的数据也丢了。
- 另外,master 的各种备份方案,也需要做。万一本地的所有文件丢失了,从备份中挑选一份 rdb去恢复 master,这样才能确保启动的时候,是有数据的,即使采用了后续讲解的高可用机制,slave node 可以自动接管 master node,但也可能 sentinel 还没检测到 master failure,master node 就自动重启了,还是可能导致上面所有的 slave node 数据被清空。
redis 主从复制的核心原理
- 当启动一个 slave node 的时候,它会发送一个 PSYNC 命令给 master node。
- 如果这是 slave node 初次连接到 master node,那么会触发一次 full resynchronization 全量复制。此时 master 会启动一个后台线程,开始生成一份 RDB 快照文件,
- 同时还会将从客户端 client 新收到的所有写命令缓存在内存中。 RDB 文件生成完毕后, master会将这个 RDB 发送给 slave,slave 会先写入本地磁盘,然后再从本地磁盘加载到内存中,
- 接着 master 会将内存中缓存的写命令发送到 slave,slave 也会同步这些数据。
- slave node 如果跟 master node 有网络故障,断开了连接,会自动重连,连接之后 master node仅会复制给 slave 部分缺少的数据。

过程原理
- 当从库和主库建立MS关系后,会向主数据库发送SYNC命令
- 主库接收到SYNC命令后会开始在后台保存快照(RDB持久化过程),并将期间接收到的写命令缓存起来
- 当快照完成后,主Redis会将快照文件和所有缓存的写命令发送给从Redis
- 从Redis接收到后,会载入快照文件并且执行收到的缓存的命令
- 之后,主Redis每当接收到写命令时就会将命令发送从Redis,从而保证数据的一致
缺点
- 所有的slave节点数据的复制和同步都由master节点来处理,会照成master节点压力太大,使用主从从结构来解决
边栏推荐
- 1261. 在受污染的二叉树中查找元素
- Mysql 5.7 into the pit
- LintCode 283. 三数之中的最大值
- Which is the best increased whole life insurance?Is it really safe?
- [ANT]apache ant 安装说明
- Electromagnetic radiation safety standards and detection methods
- 金融行业软件测试面试题(含答案)| 入门指南
- MT4/MQL4入门到精通EA课程第二课-常用的功能函数
- C#计算两个时间相差多少天、时、分、秒
- 17.flink Table Api基础概念讲解
猜你喜欢
随机推荐
2022 Eye Health Brand Franchise Exhibition, Beijing Vision Care Exhibition, China Ophthalmology Technology Summit
1160. 拼写单词
力扣刷题记录8.1-----206. 反转链表
Analysis of when AuthenticationSuccessHandler is called after UsernameAuthenticationFilter is authorized successfully
Open3D 随机采样
Mysql 5.7 into the pit
全志平台双路LVDS配置
OJ:L3-021 神坛 伪解 排序后遍历
php过滤特殊字符(仅保留中文、字母、数字、下划线)
Jenkins的环境部署,(打包、发布、部署、自动化测试)
连接数据库且在网页运行的RDLC
Open3D 计算点云的均值(质心)与协方差
如何保护智能家居避免黑客攻击
HMS Core分析服务智能运营6.5.1版本上线
MT4/MQL4入门到精通EA课程第二课-常用的功能函数
<爆>2022中文版-《海外博士申请指南-材料准备、时间线、套磁、面试及录取》免费分享
2020.10.13 Development log
ZCMU--5115: Buying Keys(C语言)
接口的安全性测试,应该从哪些方面入手?
数仓第二篇: 数据模型(维度建模)









