Redis-主从复制-心跳机制与命令传播阶段工作流程

心跳机制

  • 进入命令传播阶段时候,master与slave间需要进行信息交换,使用心跳机制进行维护,实现双方连接保持在线
  • master心跳:
    • 指令:ping
    • 周期:由repl-ping-slave-period决定,默认10秒
    • 作用:判断slave是否在线
    • 查询:INFO replication,获取slave最后一次连接时间间隔,lag向维持在0或1视为正常
  • slave心跳任务
    • 指令:REPLCONF ACK{offset}
    • 周期:1秒
    • 作用1:汇报slave自己的复制偏移量,获取最新的数据变更指令
    • 作用2:判断master是否在线

心跳阶段注意事项

  • 当slave多数掉线,或延迟过高时,master为保障数据稳定性,将拒绝所有信息同步操作
min-slave-to-write 2
min-slave-max-lag 8

slave数量少于2个,或者所有slave的延迟都大于等于10秒时,强制关闭master写功能,停止数据同步

  • slave数量由slave发送REPLCONF ACK命令做确认
  • slave延迟由slave发送REPLCONF ACK命令做确认

你可能感兴趣的:(Redis-主从复制-心跳机制与命令传播阶段工作流程)