连接阶段

1、slave node 启动时(执行slaveof 命令),会在自己本地保存master node 的信息,包括master node 的host 和ip。

2、slave node 内部有个定时任务replicationCron(源码replication.c),每隔1秒钟检查是否有新的master node 要连接和复制,如果发现,就跟master node 建立socket 网络连接,如果连接成功,从节点为该socket 建立一个专门处理复制工作的文件事件处理器,负责后续的复制工作,如接收RDB 文件、接收命令传播等。

当从节点变成了主节点的一个客户端之后,会给主节点发送ping 请求。

数据同步阶段

3、master node 第一次执行全量复制,通过bgsave 命令在本地生成一份RDB 快照,将RDB 快照文件发给slave node(如果超时会重连,可以调大repl-timeout 的值)。slave node 首先清除自己的旧数据,然后用RDB 文件加载数据。

问题:生成RDB 期间,master 接收到的命令怎么处理?

开始生成RDB 文件时,master 会把所有新的写命令缓存在内存中。在slave node保存了RDB 之后,再将新的写命令复制给slave node。

命令传播阶段

4、master node 持续将写命令,异步复制给slave node

延迟是不可避免的,只能通过优化网络。

repl-disable-tcp-nodelay no

当设置为yes 时,TCP 会对包进行合并从而减少带宽,但是发送的频率会降低,从节点数据延迟增加,一致性变差;具体发送频率与Linux 内核的配置有关,默认配置为40ms。当设置为no 时,TCP 会立马将主节点的数据发送给从节点,带宽增加但延迟变
小。

一般来说,只有当应用对Redis 数据不一致的容忍度较高,且主从节点之间网络状况不好时,才会设置为yes;多数情况使用默认值no。

问题:如果从节点有一段时间断开了与主节点的连接是不是要重新全量复制一遍?

如果可以增量复制,怎么知道上次复制到哪里?

通过master_repl_offset 记录的偏移量

redis> info replication

Redis中的主从复制原理相关推荐

  1. Redis 中 bitmap 的原理和使用

    原理 先声明一下:Redis 有5种数据类型,而 BitMap 在 Redis 中并不是一个新的数据类型,其底层是 Redis 实现. 通常情况下,我们在 redis 中存储一个字符串,如:" ...

  2. Redis中的zset原理以及用Java实现跳跃表

    准备工作 先在Redis官网下载最新的稳定版本6.2.按照官网给出的安装指南到Linux服务器上安装. zadd调用过程 redis/src/server.c 文件中定义了所有命令运行要调用的方法.z ...

  3. Redis中的主从复制的不足

    主从模式解决了数据备份和性能(通过读写分离)的问题,但是还是存在一些不足: 1.RDB 文件过大的情况下,同步非常耗时. 2.在一主一从或者一主多从的情况下,如果主服务器挂了,对外提供的服务就不可用了 ...

  4. Redis进阶篇主从复制----哨兵模式

    主从复制是什么 主从复制,就是主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 作用 读写分离,性能扩展 容灾快速恢复 当一个从数 ...

  5. 来普及一下Redis主从复制以及主从复制原理

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:LoyaltyLu segmentfault.com/a/1 ...

  6. Redis主从复制原理学习

    Redis主从复制原理学习总结 - 运维笔记 和Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的 ...

  7. Redis(二)原理以及主从复制的实现

    1.搭建实验环境 主机信息 IP 主机功能 server1 172.25.35.1 redis主服务器 server2 172.25.35.2 redis从服务器1 server3 172.25.35 ...

  8. Redis主从复制原理总结

    Redis主从复制原理 Redis主从复制原理 全量同步 增量同步 Redis主从同步策略 注意点 主从复制的一些特点: Redis主从同步是怎么实现的? 主从同步中需要注意几个问题 当主服务器不进行 ...

  9. Redis中布隆过滤器的使用及原理

    <玩转Redis>系列文章主要讲述Redis的基础及中高级应用.本文是<玩转Redis>系列第[11]篇,最新系列文章请前往公众号"zxiaofan"查看, ...

最新文章

  1. 【POJ 3273】 Monthly Expense (二分)
  2. Java 强引用与软引用以及弱引用,虚引用
  3. [python] 常用正则表达式爬取网页信息及分析HTML标签总结
  4. String的按值传递,java传参都是传值
  5. 500万人“动口”收蚂蚁森林能量!天猫精灵发布语音“云种树”报告
  6. npu算力如何计算_华为云郑叶来:多元算力驱动应用创新
  7. 运筹学状态转移方程例子_逆转的薛定谔方程,美俄科学家实现量子时间“倒流”,令人兴奋...
  8. 人工智能之语音识别概述(一)
  9. 赛迪中国ECM市场报告解读一:市场需求在2023年将达到275亿元
  10. api接口—闲鱼搜索的数据
  11. 美国队用计算机计算排球队员,排球理论考试题库
  12. Android自定义实现九宫格抽奖功能
  13. java面试题大合集(开发者必看)
  14. 从事Web前端要学什么 常用前端开发技术有哪些
  15. Linux笔记 No.22---(Linux - PAM)
  16. 我的世界服务器物品展示怎么得,我的世界怎么使用物品展示框
  17. SSM框架学习文档以及SSM整合(附Github地址=含SSM学习时的实例代码)
  18. BZOJ3141:[HNOI2013]旅行
  19. 七星配资大盘继续震荡
  20. harmonyos和emui 11概念股,从 EMUI11 到 HarmonyOS,华为 UX 设计的思考与传承

热门文章

  1. 对synchronized的一点理解
  2. 【转】解决yum安装软件报Couldn't resolve host 'mirrorlist.centos.org问题
  3. 翻译(六)——T-SQL的进阶之路:超过基础的2级水平:写子查询
  4. Hadoop学习第一天
  5. word 文档操作类,可以读出word中书签 批量替换内容,直接调用
  6. dm9000AE调试记录
  7. 关于《红泰昌 TC-2015B》严重漏电说明!
  8. 【Hibernate】getHibernateTemplate与getSession的区别以及优缺点
  9. 【干货集锦】如何轻松玩转文档管理工具?我们为你精心准备了一份学习大礼包...
  10. vue从入门到进阶:自定义指令directive,插件的封装以及混合mixins(七)