面试题答案
一键面试- 选举机制:
- Sentinel 采用 Raft 算法进行领导者选举。在一个 Sentinel 集群中,只有领导者(Leader)Sentinel 能对主从服务器执行某些关键操作,如故障转移。通过选举出唯一的领导者,避免多个 Sentinel 同时对主从服务器进行不一致的操作,减少并发冲突。例如,当检测到主服务器故障时,只有领导者 Sentinel 会发起故障转移流程,其他 Sentinel 作为跟随者(Follower)听从领导者指挥。
- 心跳检测与协调:
- Sentinel 定期向主从服务器发送心跳信息(PING 命令),以此检测服务器状态。同时,Sentinel 之间也通过互相发送心跳信息来保持联系,协调彼此的状态。例如,当一个 Sentinel 检测到主服务器疑似下线时,它会向其他 Sentinel 询问该主服务器的状态,只有在多数 Sentinel 都认同主服务器下线时,才会正式标记为主观下线(SDOWN)进而触发故障转移等后续操作,这种协调机制有助于避免因单个 Sentinel 误判而导致的并发冲突。
- 故障转移流程的有序性:
- 在故障转移过程中,Sentinel 遵循特定的步骤和顺序。首先,确定需要进行故障转移的主服务器,然后从多个从服务器中挑选一个作为新的主服务器,接着重新配置其他从服务器指向新主服务器等。这些步骤按顺序执行,确保故障转移过程的有序性,防止并发冲突。例如,在挑选新主服务器时,会根据从服务器的优先级、复制偏移量等因素进行综合考量,按既定规则选出最合适的从服务器提升为主服务器,而不是多个 Sentinel 随意选择不同的从服务器。
- 配置一致性维护:
- Sentinel 集群使用发布 - 订阅机制来传播配置更新。当领导者 Sentinel 对主从服务器进行配置更改(如故障转移后新主服务器的地址等信息)时,会通过发布 - 订阅通道将这些更新信息传播给其他 Sentinel,确保所有 Sentinel 拥有一致的配置信息。这样在后续与主从服务器交互时,基于相同的配置进行操作,避免因配置不一致导致的并发冲突。例如,新主服务器的地址信息会通过发布 - 订阅机制快速传递给所有 Sentinel,使它们在后续操作中都能正确与新主服务器通信。