面试题答案
一键面试网络分区错误
- 主从复制机制
- 原理:Redis采用异步复制,主节点将写命令传播给从节点。在网络分区时,若主从节点被分隔,主节点继续接收写操作,从节点无法及时同步。当网络恢复后,从节点会请求部分重同步(PSYNC),主节点会将从节点断开期间的写命令补发,以保证数据一致性。
- 相关命令:PSYNC用于部分重同步,主节点收到PSYNC命令后,根据从节点的偏移量等信息判断是否可以进行部分重同步,若可以则发送缺失的写命令。
- 集群选举机制
- 原理:在Redis集群中,每个节点都知道其他节点的状态。当网络分区发生,导致集群无法正常工作时,集群会尝试进行选举。只有超过半数的节点在线,才能选举出新的主节点。新主节点选举后,会继续处理写操作,从节点会同步新主节点的数据,保证一致性。
- 相关命令:集群节点间通过PING、PONG等消息进行通信,判断节点状态,为选举做准备。
节点故障错误
- 主从切换
- 原理:当主节点发生故障,Redis Sentinel(哨兵)或Redis Cluster自带的故障检测机制会检测到。Sentinel会从从节点中选举出一个新的主节点,其他从节点会重新指向新主节点。这个过程中,旧主节点的数据可能会有部分未同步到从节点,新主节点选举后,会将缺失的数据通过重同步等方式补齐,保障数据一致性。
- 相关命令:Sentinel使用SENTINEL monitor命令来监控主节点,当主节点故障时,Sentinel会执行SENTINEL failover命令进行主从切换。
- 数据修复
- 原理:对于节点故障导致的数据丢失或不一致情况,当故障节点恢复后,会从其他节点同步数据,以修复自身的数据状态。在Redis Cluster中,节点通过Gossip协议交换数据版本等信息,判断哪些数据需要同步,从而保障整个集群的数据一致性。
- 相关命令:节点间通过CLUSTER SYNC等命令进行数据同步,以修复故障节点的数据。