【面试普通人VS高手系列】Dubbo的服务请求失败怎么处理?
2022-04-18 14:45
1726 查看
今天分享的面试题,几乎是90%以上的互联网公司都会问到的问题。 “Dubbo的服务请求失败怎么处理”? 对于这个问题,我们来看一下普通人和高手的回答。
普通人:
嗯… 我记得, Dubbo请求处理失败以后,好像是会重试。 嗯!
高手:
Dubbo是一个RPC框架,它为我们的应用提供了远程通信能力的封装,同时,Dubbo在RPC通信的基础上,逐步在向一个生态在演进,它涵盖了服务注册、动态路由、容错、服务降级、负载均衡等能力,基本上在微服务架构下面临的问题,Dubbo都可以解决。
而对于Dubbo服务请求失败的场景,默认提供了重试的容错机制,也就是说,如果基于Dubbo进行服务间通信出现异常,服务消费者会对服务提供者集群中其他的节点发起重试,确保这次请求成功,默认的额外重试次数是2次。
除此之外,Dubbo还提供了更多的容错策略,我们可以根据不同的业务场景来进行选择。
- 快速失败策略,服务消费者只发起一次请求,如果请求失败,就直接把错误抛出去。这种比较适合在非幂等性场景中使用
- 失败安全策略,如果出现服务通信异常,直接把这个异常吞掉不做任何处理
- 失败自动恢复策略,后台记录失败请求,然后通过定时任务来对这个失败的请求进行重发。
- 并行调用多个服务策略,就是把这个消息广播给服务提供者集群,只要有任何一个节点返回,就表示请求执行成功。
- 广播调用策略,逐个调用服务提供者集群,只要集群中任何一个节点出现异常,就表示本次请求失败
要注意的是,默认基于重试策略的容错机制中,需要注意幂等性的处理,否则在事务型的操作中,容易出现多次数据变更的问题。
以上就是我对这个问题的理解!
总结
这类的问题,并不需要去花太多时间去背,如果你对于整个技术体系有一定的了解,你就很容易想象到最基本的处理方式。
即便是你对Dubbo不熟悉,也能回答一两种!
OK,本期的普通人VS高手面试系列就到这里结束了,喜欢的朋友记得点赞收藏。
另外,我也陆续收到了很多小伙伴的面试题,我会在后续的内容中逐步更新给到大家!
我是Mic,一个工作了14年的Java程序员,咱们下篇文章再见。
相关文章推荐
- 【面试普通人VS高手系列】CPU飙高系统反应慢怎么排查?
- 【面试普通人VS高手系列】b树和b+树的理解
- 面试系列26 如何基于dubbo进行服务治理、服务降级、失败重试以及超时重试
- 【面试普通人VS高手系列】谈谈你对AQS的理解
- 【面试普通人VS高手系列】innoDB如何解决幻读
- 【面试普通人VS高手系列】Redis和Mysql如何保证数据一致性
- 【面试普通人VS高手系列】Fail-safe机制与Fail-fast机制分别有什么作用
- 【面试普通人VS高手系列】谈谈你对Seata的理解
- 【面试普通人VS高手系列】lock和synchronized区别
- 【面试普通人VS高手系列】线程池如何知道一个线程的任务已经执行完成
- 【面试普通人VS高手系列】Spring Boot的约定优于配置,你的理解是什么?
- 【面试普通人VS高手】Kafka的零拷贝原理?
- dubbo分线程池处理同一服务请求随记
- 分布式服务的事务如何处理?比如dubbo,服务与服务之间的事务怎么处理比较好,现在有没有开源的解决方案?
- 分布式服务的事务如何处理?比如dubbo,服务与服务之间的事务怎么处理比较好,现在有没有开源的解决方案?
- 微信小程序开发系列(六)——“处理请求时出错”怎么处理?
- 某服务请求经负载均衡设备分配到集群A、B、C、D进行处理响应的概率分别是10%、20%、30%和40%。已知测试集群所得的稳定性指标分别是90%、95%、99%和99.9%。现在该服务器请求处理失败,
- Kafka系列(24)请求是怎么被处理的?
- dubbo分线程池处理同一服务请求随记
- Oracle几个基础配置问题:ORA-12154: TNS: 无法解析指定的连接标识符、ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务、ORA-12516 TNS监听程序找不到符合协议堆栈要求的可用处理程序