调用dubbo接口返回timeout_Java面试Dubbo [ 一 ]

8a1d0282562394fbbaaaa51ef48aeba7.png

来源:segmentfault.com/u/jack3021

Dubbo篇

1.Dubbo是什么?

Dubbo是阿里巴巴开源的基于Java的高性能RPC分布式服务框架。

2.为什么使用Dubbo?

因为是阿里开源项目,国内很多互联网公司都在使用,已经经过了很多线上考验。

内部使用Netty、Zookeeper,保证了高性能高可用性。

使用dubbo可以将核心业务抽取出来,作为独立的服务,用于提高业务复用灵活扩展。

3.dubbo支持什么协议,推荐用哪种?

  • dubbo://(推荐)

  • rmi://

  • hessian://

  • http://

  • webservice://

  • thrift://

  • memcached://

  • redis://

  • rest://

4.Dubbo需要 Web 容器吗?

不需要,如果硬要用 Web 容器,只会增加复杂性,也浪费资源。

5.Dubbo内置了哪几种服务容器?

  • Spring Container

  • Jetty Container

  • Log4j Container

Dubbo的服务容器只是一个简单的Main方法,并加载一个简单的Spring容器,用于暴露服务。

6. Dubbo里面有几种节点角色?

节点角色说明
Provider暴露服务的服务提供方
Consumer调用远程服务的服务消费方
Registry服务注册与发现的注册中心
Monitor统计服务的调用次数和调用时间的监控中心
Container服务运行容器

7.服务注册与发现的流程图?

a0533173cf8ca56e162432427d9dcb6a.png

8.Dubbo核心的配置有哪些?

配置配置说明解释
服务配置用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心
引用配置用于创建一个远程服务代理,一个引用可以指向多个注册中心
协议配置用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受
应用配置用于配置当前应用信息,不管该应用是提供者还是消费者
模块配置用于配置当前模块信息,可选
注册中心配置用于配置连接注册中心相关信息
监控中心配置用于配置连接监控中心相关信息,可选
提供方配置当 ProtocolConfig 和 ServiceConfig 某属性没有配置时,采用此缺省值,可选
消费方配置当 ReferenceConfig 某属性没有配置时,采用此缺省值,可选
方法配置用于 ServiceConfig 和 ReferenceConfig 指定方法级的配置信息
参数配置用于指定方法参数配置

不同粒度配置的覆盖关系

以 timeout 为例,下图显示了配置的查找顺序,其它 retries, loadbalance, actives 等类似:

  • 方法级优先,接口级次之,全局配置再次之。

  • 如果级别一样,则消费方优先,提供方次之。

其中,服务提供方配置,通过 URL 经由注册中心传递给消费方。

ce793dbcc36aef14da158643152f199c.png

(建议由服务提供方设置超时,因为一个方法需要执行多长时间,服务提供方更清楚,如果一个消费方同时引用多个服务,就不需要关心每个服务的超时设置)。

理论上 ReferenceConfig 中除了interface这一项,其他所有配置项都可以缺省不配置,框架会自动使用ConsumerConfig,ServiceConfig, ProviderConfig等提供的缺省配置。

在 Provider 上可以配置的 Consumer 端的属性有哪些?

1)timeout:方法调用超时

2)retries:失败重试次数,默认重试 2 次

3)loadbalance:负载均衡算法,默认随机

4)actives 消费者端,最大并发调用限制

9. Dubbo有哪几种集群容错方案?

集群容错方案说明
Failover Cluster失败自动切换,自动重试其他服务器(默认)
Failfast  Cluster快速失败,立即报错,只发起一次调用
Failsafe Cluster失败安全,出现异常时,直接忽略
Failback Cluster失败自动恢复,记录失败请求,定时重发
ForKing Cluster并行调用多个服务器,只要一个成功即返回
Broadcast  Cluster广播逐个调用所有提供者,任意一个报错则报错

10.Dubbo有哪几种负载均衡策略?

负载均衡策略说明
Random LoadBalance随机,按权重设置随机概率(默认)
RoundRobin LoadBalance轮训,按公约后的权重设置轮询比率
LeastActive  LoadBalance最少活跃调用数,相同或约束的随机
ConsistentHash LoadBalance一致性Hash,相同参数的请求总是发送到同一提供者

11.当一个服务接口有多种实现时怎么做?

可以使用group属性来分组,服务提供方和消费方都指定同一个group即可。

12.Dubbo服务之间的调用是阻塞的吗?

默认是同步等待结果阻塞的,支持异步调用。

Dubbo是基于NIO的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小,异步调用会返回一个Future对象。

13.说说 Dubbo 服务暴露的过程

Dubbo会在Spring实例化Bean之后,在刷新容器最后一步发布ContextRefreshEvent事件,通知实现了ApplicationListener的ServiceBean类进行回调onApplicationEvent事件方法,Dubbo会在这个方法中调用ServiceBean父类ServiceConfig的export方法,从而实现了服务发布。

更多精彩?

在公众号对话框输入以下关键词 查看更多优质内容! 大数据 | Java | 1024 | 电子书 | 速查表  Python进阶 | 面试 | 手册 | 成神 | 思想  小程序 命令行  |  人工智能  |  软件测试  |  Web前端  |  Python

0fd646f06cd2a03ed1ff1ec9f169dd06.png

扫码关注我们

获取更多学习资料

视频 | 面试 | 技术 | 电子书 

程序员编程:javaje

小编微信:BW22266688

我知道你“在看”

e104029d5904fa13f5938cb11c9625ab.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值