对接第三方服务时,对方接口突然大面积超时和报错,你们会怎么止损、降级和恢复?
我的判断
第三方大面积超时时先缩短等待、限制并发并降级业务,防止线程和连接被耗尽;恢复时半开探测、缓慢放量并对结果未知请求查单。
告警后先确认是全量还是某地区/接口,观察超时率、连接池、线程池和在途请求。立即收紧超时到业务可接受值,对第三方调用设置并发隔离和熔断;非核心能力返回缓存/默认值,核心支付若结果未知则进入处理中,不能直接宣布失败并重试扣款。
重试只针对幂等且短暂的网络错误,次数有限、指数退避带抖动,并受总 deadline 约束。熔断打开后快速失败,保留少量半开请求探测恢复;若对方按租户或区域故障,可以分维度熔断而不是全站关闭。
恢复阶段不会瞬间放开全部流量。逐级提高并发,观察对方和自身错误率;积压任务按限速补偿。支付、下单等结果未知请求通过查单和对账收敛。
事后记录对方 SLA、故障窗口、降级损失和重试放大量,并用故障注入验证超时、熔断、缓存和人工开关。
容易答偏踩坑误区
- 超时后立即重试多次。 会把对方故障放大成重试风暴。
- 只加熔断,不限制在途并发。 熔断触发前线程池可能已经耗尽。
- 恢复后一次性放量。 对方刚恢复时最容易再次被压垮。