视频资源获取失败
你好,我是何小锋。上一讲我讲解了在 RPC 框架中如何设计自适应的负载均衡,其关键点就是调用端收集服务端每个节点的指标数据,再根据各方面的指标数据进行计算打分,最后根据每个节点的分数,将更多的流量打到分数较高的节点上。
今天我们就继续下一个话题,讲讲 RPC 框架中的异常重试机制。
我们可以考虑这样一个场景。我们发起一次 RPC 调用,去调用远程的一个服务,比如用户的登录操作,我们会先对用户的用户名以及密码进行验证,验证成功之后会获取用户的基本信息。当我们通过远程的用户服务来获取用户基本信息的时候,恰好网络出现了问题,比如网络突然抖了一下,导致我们的请求失败了,而这个请求我们希望它能够尽可能地执行成功,那这时我们要怎么做呢?
我们需要重新发起一次 RPC 调用,那我们在代码中该如何处理呢?是在代码逻辑里 catch 一下,失败了就再发起一次调用吗?这样做显然不够优雅吧。这时我们就可以考虑使用 RPC 框架的重试机制。
那什么是 RPC 框架的重试机制呢?
这其实很好理解,就是当调用端发起的请求失败时,RPC 框架自身可以进行重试,再重新发送请求,用户可以自行设置是否开启重试以及重试的次数。

作者回复: 考虑的很周全
作者回复: 很不错。
作者回复: 关键点就是这些。
作者回复: 很不错!
作者回复: rpc都是实时业务,退避好像不合适啊
作者回复: 那如果是由于网络问题呢,调用端没收到响应,服务端就没法处理了吧?
作者回复: 每个框架的实现都有区别,你可以找一些开源框架,阅读源码,一一印证下,看他们的实现哪些可以借鉴,哪些需要改进。
作者回复: 重置超时时间是指,将10秒置为5秒,很大开源的rpc框架是不会修改超时时间的。
作者回复: 方案没问题,但需要考虑团队研发整体接受度
作者回复: rpc可以做到话,尽量下沉