复制

作者: 老杜振熙 | 来源:发表于2021-04-05 15:58 被阅读0次

复制之后的主从服务器会保存同样的数据,维持相同的状态

Redis主从复制以及主从复制原理 - 知乎 (zhihu.com)

SLAVEOF 主服务器地址

1. 同步

同步(SYNC/PSYNC)是复制的第一步,目的是使得从服务器转换为和主服务器同样的状态;其在旧版和新版redis中的实现原理有所不同。

旧版:从服务器发送SYNC指令,当主服务器接收到指令之时,首先执行BGSAVE,在后台生成此刻状态对应的RDB文件,同时,前台缓冲区中将保存从此刻开始的所有写命令;当RBD文件生成完毕后,发送给从服务器,然后再把缓冲区中的命令数据发给从服务器;从服务器从而恢复出和主服务器同样的状态。

新版:一个完整的SYNC指令是相当耗时的!而某些情况下,SYNC不是必要的,比如某个时刻从服务器突然断电,和主服务器断开连接,而一段时间后重新连接好,那么此时从服务器只需要执行断电期间的主服务器写命令即可;PSYNC和SYNC的区别就在这里,PSYNC包含完全复制和部分复制,让系统自动选择更优的同步方案。

2. 命令传播

命令传播是复制的第二步,当SYNC完成之后,每当主服务器执行完新的写命令导致状态发生变化时,都需要发送指令给从服务器,从而让从服务器发生相同的变化;

3. 心跳检测

REPLCONF ACK <offset>:从服务器需要每秒钟向主服务器发送一次这个命令(心跳检测),作用是检测当前网络连接是否正常,是否正确同步(如果从服务器offset落后的话,通过心跳检测,主服务器就会把缺失的命令重新发给从服务器)

4. 底层原理

PSYNC:关键就是偏移量(offset),定长队列(复制积压缓冲区),服务器运行ID这三者;主服务器和从服务器都会保存一个offset(单位为字节),表示当前服务器已经同步的位置,比如说,如果当前主服务器的offset是1023,随后它向从服务器发送了包含10个字节的命令用于命令传播,那么对应的offset就变为1033,对于从服务器,则是一样的道理;定长队列的长度默认为1MB,可以自行设置,其包含了最近一段时间主服务器所发出的指令字节以及对应的offset,当超出长度时,则最早的一些指令溢出;从服务器发送PSYNC之后,同时发送自己的offset,然后主服务器判断自己的定长队列中的offset区间是否包含从服务器的offset,如果包含,那么就执行部分复制(因为这部分的指令还是保存起来的嘛),反之则只能是完整的SYNC;此外,还会判断从服务器断联之前的主服务器ID和当前将要进行同步的主服务ID是否一致,来判断到底是部分重复还是完全重复;

网络连接:复制之后的主从服务器都是对方的客户端;主服务器成为从服务器的客户端主要是为了完成SYNC/PSYNC所需的命令数据或RDB数据的发送。

相关文章

  • Copy

    copy 复制 浅复制:指针的复制(地址的复制) 深复制:对象内容的复制 Foundion的基本对象复制 基本对象...

  • Redis 复制原理

    目录: 复制过程 数据间的同步 全量复制 部分复制 心跳 异步复制 复制原理 1. 复制过程 复制的过程步骤如下:...

  • iOS常见面试题

    1、浅复制和深复制的区别 浅层复制:只复制指向对象的指针,而不复制引用对象本身。 深层复制:复制引用对象本身。 意...

  • objective深浅拷贝

    浅复制和深复制的区别? 浅复制:只复制指向对象的指针,而不复制引用对象本身。 深复制:复制引用对象本身。 意思就是...

  • Redis——主从复制

    主从复制 : 主从复制实现:slaveof配置文件:slave ip port 复制方式全量复制全量复制全量复制开...

  • Object-C 基础知识

    --------------------| 浅复制和深复制区别 |------------------- 浅复制(...

  • iOS面试题:浅复制和深复制的区别?

    浅层复制:只复制指向对象的指针,而不复制引用对象本身。深层复制:复制引用对象本身。意思就是说我有个 A 对象,复制...

  • 为什么在头条上不容易复制

    在头条写一篇文章,复制了半天才复制一段,再复制又无法复制了,过了好长时间又去复制才能复制下来,以前复制没有这样,今...

  • 深拷贝和浅拷贝

    深复制和浅复制 1、概述 对象拷贝有两种方式:浅复制和深复制。 浅复制:拷贝指针 深复制:拷贝整个对象 2、深浅复...

  • OC属性常用关键字

    含义: copy 复制内容(深复制),如果调用copy的是数组,则为指针复制(浅复制),仅仅复制子元素的指针。 @...

网友评论

      本文标题:复制

      本文链接:https://www.haomeiwen.com/subject/yzsdkltx.html