面试题答案
一键面试故障检测常用方法
- 心跳检测:
- 原理:客户端与服务节点间定时互相发送心跳包。若服务节点一段时间未收到客户端心跳,或客户端一段时间未收到服务节点心跳,则可能出现故障。
- 优势:简单直接,可实时监控节点状态。
- 劣势:心跳频率需合理设置,过高会增加网络负担,过低可能导致故障检测延迟。
- 超时机制:
- 原理:在发起RPC调用时设定一个超时时间。若在该时间内未收到响应,就认为服务节点可能出现故障。
- 优势:实现容易,对于因网络延迟或节点无响应等情况能有效判定。
- 劣势:难以精准设置超时时间,过短可能误判正常延迟为故障,过长则影响故障响应速度。
- 主动探测:
- 原理:除正常的RPC调用外,系统定期主动向服务节点发送探测请求,根据返回结果判断节点状态。
- 优势:能主动且针对性地检测节点,及时发现潜在故障。
- 劣势:增加系统开销,若探测频率高会加重网络和节点负担。
处理故障时涉及的关键技术和流程
- 负载均衡调整:
- 技术:当检测到某服务节点故障,负载均衡器需将流量从故障节点转移到其他正常节点。常用负载均衡算法如轮询、加权轮询、最小连接数等。例如加权轮询算法,根据节点性能分配不同权重,性能好的节点权重高,接收更多流量。
- 流程:负载均衡器检测到故障节点后,更新节点状态列表,将故障节点标记为不可用。然后重新计算负载分配策略,按新策略将请求分发到正常节点。
- 服务熔断与降级:
- 技术:服务熔断类似电路保险丝,当对某服务节点的失败调用达到一定阈值,就熔断该服务,不再向其发送新请求,直接返回错误或备用数据。服务降级则是在系统资源紧张或服务故障时,降低服务的部分功能或质量,保证核心功能可用。比如电商系统在高峰时段,将商品详情页的图片展示功能降级,只显示文字信息,减少资源消耗。
- 流程:通过熔断器监控服务调用情况,统计失败次数和成功率。当失败率超过设定阈值,熔断器打开,开始熔断。此时调用直接返回预设的降级处理结果。同时,熔断器会定时尝试半开状态,允许少量请求通过,检测服务是否恢复。若恢复正常,熔断器关闭,恢复正常调用。
- 故障节点恢复与重新加入:
- 技术:故障节点恢复后,需进行健康检查,确保其能正常提供服务。可采用与故障检测类似的方法,如心跳检测、主动探测等。
- 流程:故障节点重启或修复后,主动向系统注册。系统对其进行健康检查,检查通过后,负载均衡器将其重新纳入节点列表,并根据负载均衡算法逐步分配流量,使其平稳重新加入系统运行。