JJava 知识库
JAVA INTERVIEW

高频面试题

架构高级约 1 分钟

对接第三方服务时,对方接口突然大面积超时和报错,你们会怎么止损、降级和恢复?

参考回答约 1 分钟 · 口语表达
我的判断

第三方大面积超时时先缩短等待、限制并发并降级业务,防止线程和连接被耗尽;恢复时半开探测、缓慢放量并对结果未知请求查单。

告警后先确认是全量还是某地区/接口,观察超时率、连接池、线程池和在途请求。立即收紧超时到业务可接受值,对第三方调用设置并发隔离和熔断;非核心能力返回缓存/默认值,核心支付若结果未知则进入处理中,不能直接宣布失败并重试扣款。

重试只针对幂等且短暂的网络错误,次数有限、指数退避带抖动,并受总 deadline 约束。熔断打开后快速失败,保留少量半开请求探测恢复;若对方按租户或区域故障,可以分维度熔断而不是全站关闭。

恢复阶段不会瞬间放开全部流量。逐级提高并发,观察对方和自身错误率;积压任务按限速补偿。支付、下单等结果未知请求通过查单和对账收敛。

事后记录对方 SLA、故障窗口、降级损失和重试放大量,并用故障注入验证超时、熔断、缓存和人工开关。

容易答偏踩坑误区
  • 超时后立即重试多次。 会把对方故障放大成重试风暴。
  • 只加熔断,不限制在途并发。 熔断触发前线程池可能已经耗尽。
  • 恢复后一次性放量。 对方刚恢复时最容易再次被压垮。