MST

星途 面试题库

面试题:缓存设计之Redis集群故障转移的触发条件

在Redis集群故障转移机制中,详细说明从发现节点故障到完成故障转移整个过程,有哪些关键的触发条件和步骤?
42.9万 热度难度
后端开发缓存设计

知识考点

AI 面试

面试题答案

一键面试

发现节点故障

  1. 主观下线(Subjective Down,SDOWN)
    • 触发条件:每个节点都会定期向其他节点发送PING消息,若在规定时间(可配置,默认15秒)内没有收到某个节点的PONG回复,该节点会将其标记为SDOWN,即主观认为该节点下线。
    • 步骤:节点在内部维护一个节点状态表,当出现上述情况时,在表中标记对应节点为SDOWN状态。
  2. 客观下线(Objective Down,ODOWN)
    • 触发条件:当一个节点标记某个节点为SDOWN后,会向集群中的其他节点发送FAIL消息询问。如果超过半数(N/2 + 1,N为集群中的主节点数量)的主节点都认为该节点下线,那么这个节点会被标记为ODOWN,即客观下线。
    • 步骤
      • 标记为SDOWN的节点向其他节点发送FAIL消息,包含疑似下线节点的信息。
      • 收到FAIL消息的节点根据自己对疑似下线节点的状态判断,回复确认或否认。
      • 发起询问的节点统计回复结果,若超过半数主节点确认下线,则标记该节点为ODOWN。

故障转移

  1. 从节点选举
    • 触发条件:当一个主节点被标记为ODOWN后,它的从节点开始竞争成为新的主节点。
    • 步骤
      • 资格检查:从节点检查自己是否具备选举资格,例如与主节点断开连接时间不能太长(可配置,默认10秒)等条件。
      • 选举触发:符合资格的从节点向集群广播FAILOVER_AUTH_REQUEST消息,请求其他节点给自己投票。
      • 投票过程:每个主节点只能给一个从节点投票,且优先投票给复制偏移量最大(即数据最完整)的从节点。当从节点收到超过半数(N/2 + 1,N为集群中的主节点数量)的主节点投票后,赢得选举。
  2. 故障转移执行
    • 触发条件:从节点赢得选举后。
    • 步骤
      • 成为主节点:赢得选举的从节点执行SLAVEOF NO ONE命令,断开与原主节点的复制关系,晋升为新的主节点。
      • 更新配置:新主节点向集群广播PONG消息,告知其他节点自己的新身份和状态。其他节点收到后,更新自己的集群配置,将原本指向故障主节点的信息更新为指向新主节点。
      • 数据同步:新主节点开始接收客户端请求,并在后续与其他从节点进行数据同步,使整个集群数据状态保持一致。