面试题答案
一键面试故障隔离策略
- 快速检测故障
- 心跳检测:RPC客户端与服务端之间定期发送心跳包。服务端若在一定时间内未收到客户端心跳,标记该客户端可能故障;客户端同理,若未收到服务端心跳,标记服务端故障。
- 超时机制:为每个RPC调用设置合理的超时时间。若调用超过该时间未返回结果,判定此次调用故障。
- 异常监控:捕获RPC调用过程中抛出的各类异常,如网络异常、序列化异常等,一旦捕获异常,记录并视为可能的故障。
- 将故障服务与正常服务隔离
- 熔断机制:引入熔断器模式。当RPC调用失败率达到一定阈值(如80%),熔断器开启,后续请求不再实际调用故障服务,而是直接返回预设的错误响应,避免大量无效请求浪费资源。
- 负载均衡调整:与负载均衡器协作,当检测到某个服务实例故障时,负载均衡器不再将请求转发到该故障实例,将流量导向其他正常实例。
- 服务降级:对于一些非核心的RPC服务,当故障发生时,直接关闭这些服务,优先保障核心业务服务的资源供给,确保整体系统关键功能可用。
自愈机制实现思路
- 故障排除监测
- 重试机制:在故障发生后,客户端按照一定的策略(如固定时间间隔、指数退避等)对故障的RPC调用进行重试。若重试成功,认为故障暂时排除。
- 人工介入监测:运维人员通过监控系统发现故障后,手动排查并解决问题。同时,系统记录故障相关信息,以便分析总结。
- 服务自动恢复正常运行
- 熔断器半开状态:当熔断器开启一段时间后(如1分钟),进入半开状态,允许少量请求试探性调用故障服务。若一定比例(如60%)的试探调用成功,熔断器关闭,服务恢复正常调用;若失败率仍高,则继续保持熔断状态。
- 动态调整负载均衡:当故障服务恢复后,负载均衡器逐步增加分配到该服务的流量,从低流量开始(如5%),观察一段时间(如30秒),若运行稳定,再逐步增加流量,直到恢复到正常水平,确保对整体业务影响最小化。