Yihui’s Blog

调用第三方接口应注意哪些问题?

日期:2026-07-11
标签:#面试 #八股 #后端 #第三方接口 #场景题

一句话答案

第三方调用必须假设它会慢、会错、会重复、会限流和会返回未知状态,通过超时、有限重试、幂等、熔断、隔离、验签、监控与对账保护自己。

面试口语版

接入前先明确 SLA、限额、鉴权、幂等语义、错误码和数据合规。客户端分别设置连接、读取和总 Deadline,使用独立连接池/线程池隔离;只对幂等请求和明确瞬态错误做指数退避重试,并受重试预算约束。调用失败时熔断降级,异步场景落本地任务后重试。请求要签名、防重放,响应核对金额、订单和时间。对支付等关键接口,超时只能视为“未知”,需要主动查询和日终对账,不能直接认定失败。

关键细节

  • 第三方 200 也可能是业务失败,需解析稳定错误码。
  • 日志必须脱敏 Token、手机号、证件和支付信息。
  • 限制请求/响应大小,校验证书、域名和回调签名。
  • SDK 升级、证书过期和接口版本迁移应提前监控演练。

面试官追问

  1. 超时后能否直接重试?
  2. 如何防止第三方故障拖垮本系统?
  3. 支付接口返回超时,订单该标什么状态?

面试官追问参考答案

1. 超时后能否直接重试?

只有接口幂等或携带第三方认可的幂等键时才可有限重试。非幂等写操作先查询原请求结果,或使用唯一业务号让重复请求返回同一结果;重试必须遵守总 Deadline 和退避策略。

2. 如何防止第三方故障拖垮本系统?

使用独立连接池、线程池或舱壁隔离,设置短超时、并发上限、熔断和降级,避免请求无限排队。监控错误率和尾延迟,必要时异步化或切备用供应商,重试受全局预算控制。

3. 支付接口返回超时,订单该标什么状态?

应标记支付处理中/未知,而不是失败。通过相同业务订单号主动查询、等待回调和账单对账确认最终状态;用户重复操作时返回同一支付尝试或按规则关闭旧单。

学习清单

  • 掌握超时、重试、熔断、隔离和幂等。
  • 理解关键交易的未知状态与对账。
Maintained by · YihuiEdit on GitHub

Keep reading

View all posts