头像在线制作网站,邢台wap网站建设报价,国内设计好的网站案例,5分钟的企业宣传片多少钱在命令传播阶段#xff0c;从服务器默认会以每秒一次的频率#xff0c;向主服务器发送命令#xff1a;
REPLCON FACK rep1 ication_ offset其中replication_offset是从服务器当前的复制偏移量。
发送REPLCONF ACK命令对于主从服务器有三个作用#xff1a;
检测主…在命令传播阶段从服务器默认会以每秒一次的频率向主服务器发送命令
REPLCON FACK rep1 ication_ offset其中replication_offset是从服务器当前的复制偏移量。
发送REPLCONF ACK命令对于主从服务器有三个作用
检测主从服务器的网络连接状态。
辅助实现min-slaves选项。
检测命令丢失。 下面将分别介绍这三个作用。 检测主从服务器的网络连接状态
主从服务器可以通过发送和接收REPLCONFACK命令来检查两者之间的网络连接是否正常如果主服务器超过一秒钟没有收到从服务器发来的REPLCONFACK命令那么主服务器就知道主从服务器之间的连接出现问题了。
通过向主服务器发送INFO replication命令在列出的从服务器列表的lag一栏中我们可以查看相应从服务器最后一次向主服务器发送REPLCONF ACK命令距离现在过了多少秒。 在一般情况下lag的值应该在0秒或者1秒之间跳动如果超过1秒的话那么说明主从服务器之间的连接出现了故障。 辅助实现min-slaves配置选项
Redis的min-slaves-to-write和min-slaves- max- lag两个选项可以防止主服务器在不安全的情况下执行写命令。
举个例子如果我们向主服务器提供以下设置:
min-slaves-to-write 3
min-slaves-max-lag 10那么在从服务器的数量少于3个或者三个从服务器的延迟(lag)值都大于或等于10秒时主服务器将拒绝执行写命令这里的延迟值就是上面提到的INFO replication命令的lag值。 检测命令丢失
如果因为网络故障主服务器传播给从服务器的写命令在半路丢失那么当从服务器向主服务器发送REPLCONFACK命令时主服务器将发觉从服务器当前的复制偏移量少于自己的复制偏移量然后主服务器就会根据从服务器提交的复制偏移量在复制积压缓冲区里面找到从服务器缺少的数据并将这些数据重新发送给从服务器。 举个例子假设有两个处于一致状态的主从服务器它们的复制偏移量都是200如下图所示。 在这之后当从服务器向主服务器发送REPLCONFACK命令的时候主服务器会察觉从服务器的复制偏移量依然为200而自己的复制偏移量为233这说明复制积压缓冲区里面复制偏移量为201至233的数据(也即是命令SET key value)在传播过程中丢失了于是主服务器会再次向从服务器传播命令SET key value从服务器通过接收并执行这个命令可以将自己更新至主服务器当前所处的状态如下图所示。 注意主服务器向从服务器补发缺失数据这一操作的原理和部分重同步操作的原理非常相似这两个操作的区别在于补发缺失数据操作在主从服务器没有断线的情况下执行而部分重同步操作则在主从服务器断线并重连之后执行。 总结
主服务器通过向从服务器传播命令来更新从服务器的状态保持主从服务器一致而从服务器则通过向主服务器发送命令来进行心跳检测以及命令丟失检测。