1.说明
本文档根据B站UP主分享内容整理,视频原版连接:B站链接:超实用!接口调用出错怎么办?
2.介绍
在我们进行分布式业务调用的时候,各个服务之间的调用不可能是百分百成功的,所以我们在调用接口的时候,就要考虑如果调用出错了该怎么办。
3.故障转移
利用重试的机制,选择其他可用节点,完成我们的业务。
⾼可⽤的服务集群中,多数的服务——尤其是那些经常被其他服务所依 赖的关键路径上的服务,均会部署多个副本。这些副本可能部署在不同 的节点(避免节点宕机)、⽹络交换机(避免⽹络分区)甚⾄可⽤区 (避免整个地区发⽣灾害或电⼒、⻣⼲⽹故障)中。故障转移是指如果 调⽤的服务器出现故障,系统不会⽴即向调⽤者返回失败结果,⽽是⾃ 动切换到其他服务副本,尝试通过其他副本返回成功调⽤的结果,从⽽ 保证整体的⾼可⽤性。
4.快速失败
对于⾮幂等的服务,重复调⽤就可能产⽣脏数据,⽽脏数据带来的麻烦远⼤于单纯的某次服务调⽤失败,此时就应该以快速失败作为⾸选的容错策略。譬如,在⽀付场景中,需要调 ⽤银⾏的扣款接⼝,如果该接⼝返回的结果是⽹络异常,程序很难判断 到底是扣款指令发送给银⾏时出现的⽹络异常,还是银⾏扣款后返回结 果给服务时出现的⽹络异常。为了避免重复扣款,此时最恰当可⾏的⽅ 案就是尽快让服务报错,坚决避免重试,尽快抛出异常,由调⽤者⾃⾏处理。
5.安全失败
安全失败体现出的安全是针对调用者来说,调用旁路业务无论成功还是失败,他都会返回一个成功的消息给调用者。
6.沉默失败
如果⼤量的请求需要等到超时或者⻓时间处理后才宣告失败,很容易由于某个远程服务的请求堆积⽽消耗⼤量的线程、内存、⽹络等资,进⽽ 影响到整个系统的稳定。⾯对这种情况,⼀种合理的失败策略是当请求 失败后,就默认服务提供者⼀定时间内⽆法再对外提供服务,不再向它 分配请求流量,将错误隔离开来,避免对系统其他部分产⽣影响,此即 为沉默失败策略。
7.
转载请注明:西门飞冰的博客 » 接口调用出错了怎么办?