今天分享的面试题,几乎是90%以上的互联网公司都会问到的问题。

“Dubbo的服务请求失败怎么处理”?

对于这个问题,我们来看一下普通人和高手的回答。

普通人:

嗯… 我记得, Dubbo请求处理失败以后,好像是会重试。 嗯!

高手:

Dubbo是一个RPC框架,它为我们的应用提供了远程通信能力的封装,同时,Dubbo在RPC通信的基础上,逐步在向一个生态在演进,它涵盖了服务注册、动态路由、容错、服务降级、负载均衡等能力,基本上在微服务架构下面临的问题,Dubbo都可以解决。

而对于Dubbo服务请求失败的场景,默认提供了重试的容错机制,也就是说,如果基于Dubbo进行服务间通信出现异常,服务消费者会对服务提供者集群中其他的节点发起重试,确保这次请求成功,默认的额外重试次数是2次。

除此之外,Dubbo还提供了更多的容错策略,我们可以根据不同的业务场景来进行选择。

  1. 快速失败策略,服务消费者只发起一次请求,如果请求失败,就直接把错误抛出去。这种比较适合在非幂等性场景中使用
  2. 失败安全策略,如果出现服务通信异常,直接把这个异常吞掉不做任何处理
  3. 失败自动恢复策略,后台记录失败请求,然后通过定时任务来对这个失败的请求进行重发。
  4. 并行调用多个服务策略,就是把这个消息广播给服务提供者集群,只要有任何一个节点返回,就表示请求执行成功。
  5. 广播调用策略,逐个调用服务提供者集群,只要集群中任何一个节点出现异常,就表示本次请求失败

要注意的是,默认基于重试策略的容错机制中,需要注意幂等性的处理,否则在事务型的操作中,容易出现多次数据变更的问题。

以上就是我对这个问题的理解!

总结

这类的问题,并不需要去花太多时间去背,如果你对于整个技术体系有一定的了解,你就很容易想象到最基本的处理方式。

即便是你对Dubbo不熟悉,也能回答一两种!

OK,本期的普通人VS高手面试系列就到这里结束了,喜欢的朋友记得点赞收藏。

另外,我也陆续收到了很多小伙伴的面试题,我会在后续的内容中逐步更新给到大家!

我是Mic,一个工作了14年的Java程序员,咱们下篇文章再见。

最新文章

  1. myeclipse2015卸载、安装、破解全过程-----myeclipse2015
  2. javaWeb学习-----session
  3. Java多线程4:synchronized锁机制
  4. js中url解码
  5. hdu 1520 Anniversary party 基础树dp
  6. unity3d插件Daikon Forge GUI 中文教程7-高级控件slider的使用
  7. android测试(转)
  8. Ubuntu安装取色软件
  9. JBPM4入门——5.流程定义的发布、查询、删除
  10. MySQL与Oracle 差异比较之二基本语法
  11. 一行 Python 实现并行化 -- 日常多线程操作的新思路
  12. C# 之 HttpWebResponse类
  13. apache+php+mysql windows下环境配置
  14. 在AWS上安装laravel框架
  15. 1、什么是Lucene,Lucene能干什么
  16. struts2表单提交的乱码的问题的解决
  17. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家( 平衡树 )
  18. node.js基础:HTTP服务器
  19. RabbitMQ分布式消息队列服务器(一、Windows下安装和部署)
  20. vivo7.0以上系统如何无需Root激活Xposed框架的方法

热门文章

  1. Kernel Pwn基础教程之 Double Fetch
  2. sql server 2000 单主键高效分页存储过程 (支持多字段排序)
  3. 到底为什么不建议使用SELECT *?
  4. webdriver原理及操作
  5. display 不同的值及他们的作用
  6. Collection框架中实现比较要实现什么接口?
  7. zookeeper 负载均衡和 nginx 负载均衡区别 ?
  8. 面试问题之C++语言:mutable关键字
  9. memcached 能接受的 key 的最大长度是多少?
  10. 转载:C++快速排序