(本文引自mic老师面试题)
今天分享的面试题,几乎是 90%以上的互联网公司都会问到的问题。
“Dubbo 的服务请求失败怎么处理”?
对于这个问题,我们来看一下普通人和高手的回答。
普通人
嗯… 我记得, Dubbo 请求处理失败以后,好像是会重试。 嗯!
高手
Dubbo 是一个 RPC 框架,它为我们的应用提供了远程通信能力的封装,同时,Dubbo
在 RPC 通信的基础上,逐步在向一个生态在演进,它涵盖了服务注册、动态路由、容
错、服务降级、负载均衡等能力,基本上在微服务架构下面临的问题,Dubbo 都可以
解决。
而对于 Dubbo 服务请求失败的场景,默认提供了重试的容错机制,也就是说,如果基
于 Dubbo 进行服务间通信出现异常,服务消费者会对服务提供者集群中其他的节点发
起重试,确保这次请求成功,默认的额外重试次数是 2 次。
除此之外,Dubbo 还提供了更多的容错策略,我们可以根据不同的业务场景来进行选
择。
1.
快速失败策略
,服务消费者只发起一次请求,如果请求失败,就直接把错误抛出去。
这种比较适合在非幂等性场景中使用
2.
失败安全策略
,如果出现服务通信异常,直接把这个异常吞掉不做任何处理
3.
失败自动恢复策略
,后台记录失败请求,然后通过定时任务来对这个失败的请求进
行重发。
4.
并行调用多个服务策略
,就是把这个消息广播给服务提供者集群,只要有任何一个
节点返回,就表示
请求执行成功
。
5.
广播调用策略
,逐个调用服务提供者集群,只要集群中任何一个节点出现异常,就 表示本次请求失败要注意的是,默认基于重试策略的容错机制中,需要
注意幂等性的处理
,否则在事务型
的操作中,容易出现多次数据变更的问题。
以上就是我对这个问题的理解!
结尾
这类的问题,并不需要去花太多时间去背,如果你对于整个技术体系有一定的了解,你
就很容易想象到最基本的处理方式。
即便是你对 Dubbo 不熟悉,也能回答一两种