对接第三方接口不稳定经常超时---如何处理

✅第三方接口不稳定经常超时,如何处理三方接口异常不影响自己接口

典型回答

这种情况还挺常见的,我们经常需要调外部的服务,但是有的时候外部服务又不稳定,经常会失败或者超时,那么我们怎么避免因为他们的超时而影响到我们自己的接口呢?

有以下几种办法可以选择。

异步处理

对于一些可以异步请求第三方的场景,我们应该尽可能用异步的方案,包括MQ,异步线程,甚至是离线文件同步等方案。这种异步的方案我们用的非常多。

异步的话至少能保证我们给上游的返回是不受影响的。但是异步的话需要注意的是,我们需要有个收单的过程,就是别人请求过来的时候,我们做一下收单,然后收单成功之后就给上游返回成功,然后再异步处理。如果异步失败了,则根据收单记录进行重试。

这样做的话,还需要引入一个回调或者反查机制,因为我们只是告诉上游收单成功了,是否真正成功他是不知道的,所以需要有个回调或者反查的机制。

很多人看完之后一定会觉得复杂,但是其实大家对接过很多第三方的话就能发现,其实他们很多接口也都是这么做的,都是先收单,然后处理结果有了之后在回调,或者需要我们主动反查。

这是一种非常常见的做法,目的就是提升整体的吞吐量,以及减少对下游的强依赖。

设置超时机制

如果是同步调用,也不是没有办法,那就是我们设定一个超时时间,不管下游需要多少秒,我们执行的时候,如果超过我们给定的时间,就直接结束请求。避免被下游给拖垮,比如以下做:

在我们发现超时之后,可以通过一些降级手段做返回,比如如果是查询接口的话,可以返回默认值,或者上次查询结果的值都可以。如果是写操作稍微麻烦一点,就需要约定好一些超时的处理策略,以及引入幂等+重试的机制了。

但是不管怎么样,这个超时机制还是非常有必要的,可以在关键时刻救命。

熔断机制

如果大家知道熔断的话,就会知道,我们可以借助熔断器实现当第三方接口的错误率或超时次数达到一定阈值时,停止请求该接口一段时间(熔断状态),然后逐渐恢复流量。

我们可以借助hystrix、sentinel等工具帮我们实现快速熔断,这样就能很好的避免我们自己被拖垮,也可以避免给下游造成进一部分压力。

业务取舍

大家知道最开始余额宝被做出来主要是干嘛的吗?其实最初是为了解决支付成功率低的问题的。

大促期间就是因为银联等外部渠道支付成功率太低了,但是很多人又因为银行有收益所以把钱存在银行。

那为了解决这个问题,一个好的办法,就是在业务上给用户多一个选择,让用户减少使用银行卡支付的概率。

就假如说,高德聚合打车,发现外部服务商技术都太差了,他做了自营,是不是也能大幅度降低对外部机构的依赖问题呢?

相关推荐
Dovis(誓平步青云)28 分钟前
《Linux CPU频率为何忽高忽低:cpufreq、idle状态与性能抖动教程》
linux·运维·服务器·spring boot·后端·生成对抗网络
To_OC8 小时前
手写 AI 编程 Agent 的命令执行工具:我被 child_process 坑出来的实战经验
后端·node.js·agent
逝水无殇10 小时前
C# 异常处理详解
开发语言·后端·c#
考虑考虑13 小时前
Sentinel安装
java·后端·微服务
IT_陈寒13 小时前
SpringBoot自动配置失灵?你可能忘了这个关键注解
前端·人工智能·后端
碎碎念_49213 小时前
SpringBoot + Vue 前后端分离从 0 到 1 完整环境配置流程
vue.js·spring boot·后端
逝水无殇13 小时前
C# 文件的输入与输出详解
开发语言·数据库·后端·c#
YIAN13 小时前
从手写 Agent 工具到 MCP 协议:一文搞懂大模型跨进程跨语言工具调用
后端·agent·mcp
小兔崽子去哪了14 小时前
Docker 删除镜像后磁盘空间没有释放?
后端·docker·容器
高明珠14 小时前
麒麟 V10 SP1 排查实录:ttyS5 每 10 秒莫名收到一批报文,元凶是 eGTouchD
后端