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

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制,第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中,可以通过执行SLACEOF命令或者设置slaveof选项,让一个服务器去复制另一个服务器,我们称呼被复制的服务器为主服务器,而对主服务器进行复制的服务器则称为从服务器

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

1.旧版复制功能的实现

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

1.1同步

 

 1.2命令传播

 2.旧版复制功能的缺陷

3.新版复制功能的实现 

为了解决旧版复制功能在处理短线重复制情况时的低效问题,redis从版本2.8开始,使用PSYNC命令来代替SYNC命令来执行复制时的同步 *** 作

4.部分同步的实现 

 

4.1复制偏移量 

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

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

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

 

 4.2复制积压缓冲区

复制积压缓冲区是由主服务器维护的一个固定场地先进先出队列,默认大小1MB

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

 

 4.3服务器运行ID

除了复制偏移量和复制积压缓冲区之外,部分重同步爱需要用到服务器运行ID:

 5.PSYNC命令的实现

PSYNC命令的调用方法有两种:

 根据情况,主服务器接收到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检查命令丢失 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/871512.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存