面试题答案
一键面试心跳检测
- 原理:节点定期向其他节点或中心协调者发送心跳消息,若接收方在一定时间内未收到心跳,就认为发送方节点可能出现故障。比如 RabbitMQ 集群中节点之间通过周期性发送心跳包来维持连接状态,监控节点健康。
超时检测
- 原理:设置一个操作的超时时间,当节点间的请求响应、数据同步等操作超过设定的超时时间未完成,就判定相关节点可能故障。例如在 Kafka 中,生产者向 broker 发送消息时,若等待 broker 确认消息接收的时间超过设定的超时时间,生产者可能认为 broker 节点存在故障。
基于共识算法检测
- 原理:像 Raft、Paxos 等共识算法,集群节点通过互相通信,交换状态信息,共同决定系统状态。若某个节点长时间未参与共识过程或状态不一致,其他节点根据共识算法规则判定其故障。例如在 etcd 基于 Raft 算法的集群中,节点通过选举、日志同步等交互,若某个节点长时间未响应或日志落后太多,会被其他节点判定为故障。