面试题答案
一键面试机制与步骤
- 心跳检测机制:主从节点之间通过发送心跳包来保持连接状态监测。在网络闪断时,心跳包发送失败,触发主从节点对网络问题的感知。
- 部分重同步机制
- 偏移量记录:主节点会记录自己的复制偏移量(replication offset),从节点也会记录自己当前复制到的主节点偏移量。当网络闪断恢复后,从节点会向主节点发送包含自己当前偏移量的命令。
- 复制积压缓冲区:主节点维护一个固定大小的复制积压缓冲区(replication backlog),用于记录最近一段时间内的数据写入命令。当从节点告知主节点自己的偏移量后,主节点检查该偏移量是否在复制积压缓冲区中。
- 数据补发:如果偏移量在缓冲区中,主节点会从该偏移量位置开始,将后续的数据命令补发(部分重同步)给从节点,从而使从节点能继续从断点处进行数据同步,确保数据一致性。
- 全量重同步机制
- 条件触发:如果从节点的偏移量不在主节点的复制积压缓冲区中(如网络闪断时间过长,复制积压缓冲区已覆盖了从节点记录的偏移量相关数据),则会触发全量重同步。
- 执行过程:主节点会生成一个RDB快照文件,并将其发送给从节点。从节点收到RDB文件后,先清空自己的数据,然后加载RDB文件进行数据恢复。之后主节点会将RDB生成期间的写命令同步给从节点,完成全量重同步,确保数据一致性。