史上最全 40 道 Dubbo 面试题及答案,看完碾压面试官!-- 第一部分20t题

转:https://blog.csdn.net/Y0Q2T57s/article/details/83005376

1、Dubbo是什么?

dubbo是 阿里巴巴开源的一个基于JAVA的RPC分布式框架,已经捐赠给apache基金会。

 2、为什么要用Dubbo?

dubbo已经 经过阿里双十一的历练,以及很多国内互联网企业的使用,足够稳定可靠。 底层使用 netty通信, 使用zooKeeper作为注册中心 治理服务。

使用dubbo能够 把核心业务单独拆分出来,作为一个独立的服务存在,给其他业务提供依赖。 该分布式设计,能大大提高系统的并发吞吐量和性能。

3、Dubbo 和 Spring Cloud 有什么区别?

两者没关联:

区别1:通信方式不同,Dubbo使用的是 RPC通信,spring cloud使用的是 http restFul通信。

区别2:组成部分不一样: dubbo的组成只有 注册中心zk和服务监控dubbo-monitor , 但是spring cloud的组件就非常多。

4、dubbo都支持什么协议,推荐用哪种?

dubbo支持的协议很多,包括dubbo,http,webphere协议, 推荐使用dubbo协议(为什么?)

因为dubbo缺省协议 使用的是单一长连接以及nio异步通信,适合并发高的小数据量的服务调用,以及消费者服务机器远大于生产者的情况。

缺省协议,使用基于mina1.1.7+hessian3.2.1的tbremoting交互(注意:可能不同的dubbo版本不一样)。

连接个数:单连接
连接方式:长连接
传输协议:TCP
传输方式:NIO异步传输
序列化:Hessian二进制序列化
适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用dubbo协议传输大文件或超大字符串。
适用场景:常规远程服务方法调用

5 Dubbo需要 Web 容器吗?

不需要,可以使用Dubbo框架提供的Main方法运行。

具体运行案例,看以下网址:

https://blog.csdn.net/u013168445/article/details/71194666

使用Web容器启动也行。

6、Dubbo内置了哪几种服务容器?

  • Spring Container

  • Jetty Container

  • Log4j Container

该网址 详细讲述了 dubbo的SPI以及Main函数的启动。

https://blog.csdn.net/wender/article/details/79504835

7、Dubbo里面有哪几种节点角色?

Provider:服务提供者

Consumer:服务消费者

monitor:监控中心

register:服务注册中心与服务发现中心

container:服务运行容器

8、画一画服务注册与发现的流程图

第一步:在容器container中 启动provider

第二步:provider 服务提供者 将服务注册到register注册中心

第三步:consumer 订阅subscribe 注册中心的服务

第四步:注册中心返回(notify通知)consumer订阅的服务的地址,由consumer调用provider的地址来调用provider的服务。

第五步:监控中心monitor 监控注册中心register中的注册服务与消费服务的情况

9、Dubbo默认使用什么注册中心,还有别的选择吗?

dubbo默认使用zookeeper作为注册中心,还有redis,simple, muticast等注册中心,但是不推荐。

10、Dubbo有哪几种配置方式?

  • XML 配置文件方式
  • properties 配置文件方式
  • annotation 配置方式
  • API 配置方式

1)Spring 配置方式
2)Java API 配置方式 参考答案不精确

这篇文章不错: http://www.cnblogs.com/chanshuyi/p/5144288.html

11、Dubbo 核心的配置有哪些?

对比dubbo*.xml文件 与 核心配置的表格,更加好记忆:

  <dubbo:monitor protocol="registry" />
    <dubbo:application name="${dubbo.application.name}" />

    <dubbo:registry server="zkRegistry" protocol="${dubbo.registry.protocol}" address="${dubbo.registry.address}" file="${dubbo.registry.file}" />
    <dubbo:protocol port="${dubbo.protocol.port}" />
    <dubbo:provider timeout="${dubbo.provider.timeout}" />
    <dubbo:consumer check="false" timeout="${dubbo.consumer.timeout}"/>

    <!-- 订单接口 -->
    <dubbo:service interface="cn.com.weidai.oxen.facade.GoodsCodeMenuFacade"
                   ref="goodsCodeMenuFacade"/>
    <dubbo:service interface="cn.com.weidai.oxen.facade.JxdContactInfoFacade"
                   ref="jxdContactInfoFacade"/>
     <!--<bean id="goodsCodeMenuFacade"-->
           <!--name="cn.com.weidai.oxen.facade.GoodsCodeMenuFacade"></bean>-->
    <!--影像中心接口-->
    <dubbo:reference interface="cn.com.weidai.image.api.ImageInterFace" id="imageInterFace" timeout="100000"/>

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

1)timeout:方法调用超时
2)retries:失败重试次数,默认重试 2 次
3)loadbalance:负载均衡算法,默认随机
4)actives 消费者端,最大并发调用限制

provider.xml的配置:

<dubbo:service timeout="4000" retries="0" interface="com.dingding.tms.bms.service.BillingZfbCodOrderService" ref="billingZfbCodOrderService" registry="globalRegistry"/>

参考网址: https://blog.csdn.net/lkforce/article/details/54380201

13、Dubbo启动时如果依赖的服务不可用会怎样?

Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,默认 check="true",可以通过 check="false" 关闭检查。

参考网址: https://blog.csdn.net/shenhaiwen/article/details/73548612

14、Dubbo推荐使用什么序列化框架,你知道的还有哪些?

推荐使用Hessian序列化,还有Duddo、FastJson、Java自带序列化。

为什么使用Hessian的网址:

https://www.cnblogs.com/sunnyfarmer/articles/2228040.html

15、Dubbo默认使用的是什么通信框架,还有别的选择吗?

Dubbo 默认使用 Netty 框架,也是推荐的选择,另外内容还集成有Mina、Grizzly。

为什么使用netty的原因: https://www.jianshu.com/p/12826f1e10c2

16、Dubbo有哪几种集群容错方案,默认是哪种?

failOver cluter: 失败自动切换,自动重试其他服务器(默认)

failFast: 快速失败,立即报错,只有一次调用

17、Dubbo有哪几种负载均衡策略,默认是哪种?

随机 random

轮询 roundrobin

最少活跃 least active  网址:https://blog.csdn.net/revivedsun/article/details/71330126

一致性hash: https://www.cnblogs.com/lpfuture/p/5796398.html

http://www.zsythink.net/archives/1182 (多看几遍)

hashCode: https://www.cnblogs.com/dolphin0520/p/3681042.html

理解 hashcode 和 hash 算法:https://blog.csdn.net/qq_38182963/article/details/78940047

18、注册了多个同一样的服务,如果测试指定的某一个服务呢?

可以配置环境点对点直连,绕过注册中心,将以服务接口为单位,忽略注册中心的提供者列表。

有空 跑一下网址的代码 验证: https://blog.csdn.net/qq_14908027/article/details/81135038

19、Dubbo支持服务多协议吗?

Dubbo 允许配置多协议,在不同服务上支持不同协议或者同一服务上同时支持多种协议。

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

当一个接口有多种实现时,可以用 group 属性来分组,服务提供方和消费方都指定同一个 group 即可。

有空 跑一下网址的代码 验证:https://blog.csdn.net/u010317829/article/details/52149527

猜你喜欢

转载自blog.csdn.net/tuyf_hs/article/details/88372460