【Redis学习笔记】2018-06-08 主从复制实现

顺风车运营研发团队 黄桃
1、主从复制问题 方案讨论
方案一:

  • 主收到从服务的同步请求,则立马生成一个数据副本+缓冲区,再异步启动BGSAVE进程,读取数据副本并生成RDB文件,新收到的写命令则往缓冲区写入。待RDB文件同步到从服务器完成,再把缓冲区的命令重新执行一遍。

方案二:

  • 主收到从服务的同步请求,则只生成缓冲区,再异步启动BGSAVE进程,读取主数据并生成RDB文件,把修改数据的结果往缓冲区写入。待RDB文件同步到从服务器完成,再把缓冲区的数据重新更新一遍。

方案一的复杂性较低,方案二则内存利用率更高,REDIS采用的是方案一。

2、具体过程如下:

1、redis服务器,在收到命令:SLAVEOF 127.0.0.1:6379,后则把命令中的 127.0.0.1:6379 当自己的成主服务,并向其发送SYNC命令。

2、从服务器从生产到离线,等待主服务数据同步。

3、主服务收到SYNC后,则执行BGSAVE命令,异步启动BGSAVE进程,生成RDB文件,新收到的写命令则往缓冲区写入。

4、主服务生产完rdb文件,则把该文件发送到从服务,待同步到从服务器完成,再把缓冲区的命令重新执行一遍。

《【Redis学习笔记】2018-06-08 主从复制实现》

3、部分主从复制方案实现

《【Redis学习笔记】2018-06-08 主从复制实现》

4、源码实现:
待补充

    原文作者:LNMPR源码研究
    原文地址: https://segmentfault.com/a/1190000015337605
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞