最新60道Dubbo面试题及答案附答案汇总
最新60道Dubbo面试题及答案附答案汇总
全部面试题答案,更新日期:01月30日,直接下载吧!
下载链接:高清500+份面试题资料及电子书,累计 10000+ 页大厂面试题 PDF
Dubbo
题1:Dubbo 支持集成 Spring Boot 吗?
Dubbo支持集成Spring Boot。
Apache Dubbo Spring Boot项目可以使用Dubbo作为RPC框架轻松创建Spring Boot应用程序。关注Java精选公众号,源码分析持续更新。
项目地址:
更重要的是提供:
自动配置功能(例如,注释驱动、自动配置、外部化配置)。
生产就绪功能(例如,安全性、健康检查、外部化配置)。
Apache Dubbo是一个高性能、轻量级、基于java的RPC框架。Dubbo提供了三个关键功能,包括基于接口的远程调用、容错和负载均衡以及自动服务注册和发现。
题2:Dubbo 中服务暴露的过程?
Dubbo在Spring实例化完bean之后,在刷新容器最后一步发布ContextRefreshEvent事件的时候,通知实现了ApplicationListener的ServiceBean类进行回调onApplicationEvent事件方法,Dubbo会在这个方法中调用ServiceBean父类ServiceConfig的export方法,而该方法真正实现了服务的(异步或者非异步)发布。
题3:除了 Dubbo,还了解那些分布式框架吗?
Spring cloud、Facebook(脸书)的Thrift、Twitter的Finagle等。
题4:Dubbo telnet 命令有什么用处?
Dubbo服务发布成功后,可以利用telnet命令进行调试、管理。
Dubbo2.0.5以上版本服务提供端口支持telnet命令。
连接服务
telnet localhost 20880 //键入回车进入 Dubbo 命令模式。
查看服务列表:
dubbo>ls
com.test.TestService
dubbo>ls com.test.TestService
create
delete
query
ls (list services and methods)
ls: 显示服务列表。
ls -l: 显示服务详细信息列表。
ls XxxService:显示服务的方法列表。
ls -l XxxService:显示服务的方法详细信息列表
题5:Dubbo 支持服务降级吗?
Dubbo 2.2.0以上版本支持服务降级。
通过dubbo:reference中设置mock="return null"实现服务降级。
mock的值可以修改为true,再跟接口同一个路径下实现一个Mock类,命名规则是 “接口名称+Mock” 后缀。最后在Mock类里实现降级逻辑。
题6:Dubbo四种负载均衡策略
Dubbo实现了常见的集群策略,并提供扩展点予以自行实现。Dubbo四种常见负载均衡策略。
Random LoadBalance
随机模式:随机选取提供者策略,随机转发请求,可以加权
RoundRobin LoadBalance
轮询模式:轮循选取提供者策略,请求平均分布
LeastActive LoadBalance
最少活跃调用数:最少活跃调用策略,可以让慢提供者接收更少的请求
ConstantHash LoadBalance
一致hash:一致性 Hash 策略,相同参数请求总是发到同一提供者,一台机器宕机,可以基于虚拟节点,分摊至其他提供者
缺省时为随机模式(Random LoadBalance)。
题7:注册同一服务,如何指定某一服务?
可以配置环境点对点直连,绕过注册中心,将以服务接口为单位,忽略注册中心的提供者列表。
题8:Dubbo 超时的实现原理是什么?
dubbo默认采用了netty做为网络组件,它属于一种NIO的模式。消费端发起远程请求后,线程不会阻塞等待服务端的返回,而是马上得到一个ResponseFuture,消费端通过不断的轮询机制判断结果是否有返回。
轮询需要特别注要的就是避免死循环,因此为了解决这个问题引入了超时机制,只在一定时间范围内做轮询,如果超时时间就返回超时异常。
题9:Dubbo 默认使用什么通信框架,还有别的选择吗?
Dubbo默认使用Netty框架,也是推荐的选择。
Dubbo还集成有Mina、Grizzly。
题10:为什么 Dubbo 不用 JDK SPI,而是要自己实现?
Java SPI在查找扩展实现类的时候遍历SPI的配置文件并且将实现类全部实例化。
假设一个实现类初始化过程比较消耗资源且耗时,但是代码中又用不上它,这就造成了资源的浪费。
因此Dubbo就自己实现了一个SPI,给每个实现类配了个名字,通过名字去文件里面找到对应的实现类全限定名然后加载实例化,按需加载。