《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制

目录

1.旧版复制功能的实现

1.1同步

​ 1.2命令传播

​ 2.旧版复制功能的缺陷

3.新版复制功能的实现 

4.部分同步的实现 

4.1复制偏移量 

 4.2复制积压缓冲区

 4.3服务器运行ID

 5.PSYNC命令的实现

 6.复制的实现

6.1步骤1:设置主服务器的地址和端口

6.2步骤2:建立套接字连接

 6.3步骤3:发送PING命令

6.4步骤4:身份验证

6.5步骤5:发送端口信息

6.7步骤6:同步

6.7步骤7:命令传播 

 7.心跳检测

7.1检测主从服务器的网络连接状态 

7.2辅助实现min-slaves配置选项

7.3检查命令丢失 


《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第1张图片

 在redis中,可以通过执行SLACEOF命令或者设置slaveof选项,让一个服务器去复制另一个服务器,我们称呼被复制的服务器为主服务器,而对主服务器进行复制的服务器则称为从服务器

进行复制中的主从服务器双方的数据库将保存相同的数据,概念上将这种现象称作“数据库状态一致”,或者简称为“一致”。

1.旧版复制功能的实现

redis复制功能分为同步喝命令传播两个操作:

1.1同步

 《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第2张图片

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第3张图片 1.2命令传播

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第4张图片 2.旧版复制功能的缺陷

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第5张图片

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第6张图片

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第7张图片

3.新版复制功能的实现 

为了解决旧版复制功能在处理短线重复制情况时的低效问题,redis从版本2.8开始,使用PSYNC命令来代替SYNC命令来执行复制时的同步操作《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第8张图片

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第9张图片

4.部分同步的实现 

 《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第10张图片

4.1复制偏移量 

执行复制的双方——主服务器和从服务器会分别维护一个复制偏移量:

主服务器每次向从服务器传播N个字节的字节数据时,就将自己的复制偏移量的值加上N。

从服务器每次收到主服务器传播来的N个字节数据时,就将自己的复制偏移量的值加上N。

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第11张图片

 《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第12张图片

 4.2复制积压缓冲区

复制积压缓冲区是由主服务器维护的一个固定场地先进先出队列,默认大小1MB《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第13张图片

 当主服务器进行命令传播时,它不仅会将写命令发送给所有从服务器,还会将写命令入队到复制积压缓冲区:

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第14张图片《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第15张图片

 《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第16张图片

 4.3服务器运行ID

除了复制偏移量和复制积压缓冲区之外,部分重同步爱需要用到服务器运行ID:《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第17张图片

 5.PSYNC命令的实现

PSYNC命令的调用方法有两种:《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第18张图片

 根据情况,主服务器接收到PSYNC命令后会返回以下三种回复的其中一种:《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第19张图片

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第20张图片

 6.复制的实现

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第21张图片

6.1步骤1:设置主服务器的地址和端口

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第22张图片

6.2步骤2:建立套接字连接

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第23张图片

 6.3步骤3:发送PING命令

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第24张图片

 《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第25张图片

6.4步骤4:身份验证

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第26张图片 《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第27张图片

6.5步骤5:发送端口信息

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第28张图片 《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第29张图片

6.7步骤6:同步

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第30张图片

6.7步骤7:命令传播 

 

 7.心跳检测

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第31张图片

7.1检测主从服务器的网络连接状态 

 

7.2辅助实现min-slaves配置选项

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第32张图片

7.3检查命令丢失 

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第33张图片

 《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制_第34张图片

你可能感兴趣的:(redis读书笔记,服务器,redis,database,数据库)