MST
星途 面试题库

面试题:如何在Redis主从复制架构下,结合新版实时性提升机制确保数据一致性?

假设你正在使用Redis的主从复制架构,在新版对复制功能实时性有提升的情况下,说明在主节点数据更新后,如何通过相关机制保证从节点能尽快且准确地同步数据,以确保整个架构的数据一致性,阐述其中涉及的关键技术点和流程。
40.3万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

关键技术点

  1. 心跳机制:主节点定期向从节点发送PING命令,从节点回复PONG响应,用于检测主从节点间的连接状态,保证数据传输链路正常。
  2. 部分重同步:新版Redis中,主节点会记录复制积压缓冲区(replication buffer),当网络中断等导致数据同步短暂中断恢复后,从节点可以通过发送PSYNC命令,主节点依据复制积压缓冲区,只将缺失部分数据同步给从节点,减少全量同步开销,提升实时性。
  3. 无盘复制:主节点在进行全量同步时,无需先将RDB文件写入磁盘,而是直接通过网络发送给从节点,减少磁盘I/O操作,加快全量同步速度。

流程

  1. 全量同步流程
    • 从节点初次连接主节点,发送SYNC命令(新版Redis中,从节点先发送PSYNC命令,若主节点不支持部分重同步,则执行全量同步流程)。
    • 主节点收到命令后,执行BGSAVE生成RDB文件,并将此后的写命令缓存到复制积压缓冲区。
    • 主节点将RDB文件发送给从节点,从节点接收并载入RDB文件,完成数据初始化。
    • 主节点将复制积压缓冲区缓存的写命令发送给从节点,从节点执行这些命令,完成全量同步。
  2. 部分重同步流程
    • 网络中断时,从节点记录自己的复制偏移量(replication offset)。
    • 网络恢复后,从节点发送PSYNC 命令给主节点,其中runid是主节点的运行ID,offset是从节点记录的复制偏移量。
    • 主节点判断offset是否在复制积压缓冲区范围内,若在,则执行部分重同步:主节点将复制积压缓冲区中从offset开始的数据发送给从节点,从节点接收并执行,完成部分重同步。若不在,则执行全量同步流程。