MST

星途 面试题库

面试题:Redis新版复制功能架构设计中的数据同步机制有哪些亮点

请阐述Redis新版复制功能架构设计里,数据同步机制相对旧版有哪些优化和独特的设计亮点,例如在初次同步和部分同步方面的改进。
17.3万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

1. 初次同步优化

  • 旧版:旧版初次同步时,主库将RDB文件传输给从库,传输过程中主库产生的新写命令会写入缓冲区,待RDB传输完毕,再将缓冲区命令发送给从库。这个过程可能存在较大延迟,且如果网络不稳定,缓冲区可能占用过多内存。
  • 新版
    • PSYNC2协议:引入了PSYNC2协议,增强了初次同步的健壮性。在初次同步时,主库生成一个新的RDB文件并发送给从库,同时将新写命令记录到一个内存缓冲区(repl_backlog_buffer)。从库接收RDB文件后,会发送一个ACK确认消息给主库,主库再将缓冲区中的命令发送给从库。
    • 减少全量同步次数:PSYNC2协议通过更精确的同步机制,使得在一些情况下即使网络短暂中断,也可能不需要进行全量同步,减少了全量同步带来的高开销。

2. 部分同步改进

  • 旧版:旧版部分同步依赖于主库的复制偏移量和从库的复制积压缓冲区。当网络中断后,从库尝试通过发送自己的偏移量来请求部分同步,但如果偏移量超出主库的复制积压缓冲区范围,就只能进行全量同步。
  • 新版
    • 增强的复制偏移量管理:新版对复制偏移量的管理更加细致。主库会为每个从库维护一个复制偏移量,并且在PSYNC2协议下,从库在网络中断重连后,会发送自己的runID和偏移量。主库通过对比runID和偏移量,更准确地判断是否可以进行部分同步。
    • 增加复制积压缓冲区大小灵活性:新版允许更灵活地配置复制积压缓冲区大小,以适应不同的应用场景,减少因缓冲区过小导致无法进行部分同步而只能全量同步的情况。
    • 辅助部分同步的日志机制:主库会记录一些额外的日志信息,这些信息有助于在部分同步时更准确地定位需要补发的命令,提高部分同步的成功率和效率。

3. 其他设计亮点

  • 多线程数据传输:在新版中,主库向从库传输数据时,可能采用多线程的方式进行数据传输,提高数据传输效率,尤其在大量数据同步时,能显著缩短同步时间。
  • 无盘复制:主库在生成RDB文件时,可以选择无盘复制方式。即不将RDB文件先写入磁盘,而是直接通过网络发送给从库,减少了磁盘I/O开销,提高同步速度。