空气炸锅做糕点的网站,做IP授权的一般看什么网站,源码出售网站怎么做,企业管理系统需求分析首先从机需要发送自身携带的replid和offset向主机请求连接
replid#xff1a;replid是所有主机在启动时会生成的一个固定标识#xff0c;它表示当前复制流的id#xff0c;当从机第一次请求连接时#xff0c;主机会将自己的replid发送给从机#xff0c;从机在接下来的请求…首先从机需要发送自身携带的replid和offset向主机请求连接
replidreplid是所有主机在启动时会生成的一个固定标识它表示当前复制流的id当从机第一次请求连接时主机会将自己的replid发送给从机从机在接下来的请求都将携带这个replid确认主从机在同一复制流中如果中途主机宕机重新启动会生成新的replid或从机宕机但未开启持久化存储replid保存在内存中不开启持久化存储配置重启会消失都会导致replid丢失从而执行全量复制
offsetoffset表示当前的主机向复制缓冲区复制了多少数据每当主机向复制缓冲区复制数据时offset都会增加从机也是通过记录上次的offset来判断需要从哪里开始执行复制缓冲区的指令。如果从机因为某些原因断连如果从机记录的offset没有被最新修改数据的指令在复制缓冲区覆盖并且保存了replid则可以进行增量复制无需全量复制。
复制缓冲区主机在想从机复制数据时并不会直接将数据复制给从机而是将操作数据的指令存入数据缓冲区并且记录offset在将复制缓冲区传递给从机从机根据自身记录的offset执行复制缓冲区内记录的指令以达到数据复制效果复制缓冲区中的命令已满时新命令会覆盖最早的旧命令这也就导致了如果从机请求复制数据时它携带的offset已经被覆盖那么他则必须全量复制不过只要连接不断开这种情况不会发生。
全量复制就是将从机数据清空将主机数据完整的通过rdb文件复制到从机增量复制是基于从机已有的数据和offset通过主机的复制缓冲区保存的指令进行复制具体取决于从机是否拥有主机的replid以及保存的offset是否被新指令覆盖。
紧接着从机验证replid是否和自己相同如果相同则证明时本次复制流中的从机如果不是则证明不是需要进行全量连接全量连接时主机会调用save执行进行数据快照生成rdb文件rdb文件记录了主机中所有的数据然后主机将rdb文件发送给从机实现全量复制而如果replid相同则继续判断offset如果offset存在于当前复制缓冲区的返回则发送复制缓冲区的内容让从机数据进行增量复制如果offset已经被覆盖则仍然需要全量复制主机还需发送版本信息进行验证主机从机的redis是否为同一版本如果不为同一版本仍无法连接。
建立连接后主机将按照既定周期源源不断的将复制缓存区内容发送给各个从机进行复制。