1、Dubbo是什么?
Dubbo是阿里巴巴开源的基于Java的高性能的RPC分布式服务框,现在已成基金孵化项目。
2、为什么要用Dubbo?
因为是阿里开源项目,国内很多互联网公司都在用,已经经过很多线上考验,内部使用了Netty、Zookeeper,保证了高性能,高可用性。
使用Dubbo可以将核心的业务抽取出来,作为独立的服务,逐渐形成稳定的服务中以,可用于提高业务复用灵活扩展,使前端应能更快速的响应多变的市场需求。
3、Dubbo超时时间怎么设置?
1)、服务提供者设置超时时间,在Dubbo的用户文档中,推存如能在服务商多配置就尽量多配置,因为服务提供供者比消费者更清楚自己提供的服务特性。
2)、服务的消费者设置超时时间,如果在消费者端设置了超时时间,以消费者为主,即优先级会更高。因为服务调用方设置超时时间控制性更灵活,如会消费方超时,服务端线程不会定制,会产生警告。
4、Dubbo与Spring的关系;
Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何的API侵入,只需要用Spring加载Dubbo的配置即可,Dubbo基本Spring的Schema扩展和加载
5、Dubbo与SpringCloud有什么区别?
两个没有关联,更说有区别,有以后几点
1)、通信方式不同,
Dubbo采用的是RPC通信,Spring Cloud使用的是Http RestFul方式。
2)、组成部分不同
6、Dubbo默认使用的是什么通信框架。还有别选择吗?
Dubbo默认使用的是Netty框架,也是推荐选择,另外内容还集成有,Mina、Grizzly。
7、服务上线怎么兼容旧版本?
可以用版本号(version)过渡,多个不同的版本服务注册到注册中心,版本号不同的服务相互不引。这和服务分组的概念有一点类似,
8、Dubbo可以对结果进行缓存吗?
可以,Dubbo提供了声明式缓存,用于加速热门数据的访问速度,以减少加缓存的工作量。
9、Dubbo服务之间的调用是阻塞的吗?
默认是同步等侍结果阻塞,支持异步调用。
Dubbo是基于NIO的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程,开销较小,异步调用会返回一个Ruture对象。
10、Dubbo支持分布式事务吗?
目前暂时不支持,后续可能采用基于JTA/XA规范实现。
11、Dubbo telnet命令能做什么?
Doubbo通过telnet命令进行服务冶理。
12、Dubbo停止维护了吗?
2014年开始停止维护近几年,17年开始重新维护,并进入了Apache项目。
13、Dubbo和Dubbox有什么区别?
Dubbox是续Dubbo停止维护后,当当网基于Dubbo做的一个扩展项目,如加了服务RestFul调用,更新了开源组件等。
14、你还了解别的分布式框架吗?
别的还有Spring Cloud、FaceBook的Thrift、Twitter的Finagle等。
15、Dubbo能集成Spring Boot吗?
可以的。
16、在使用过程中都遇到了些什么问题?
Dubbo的设计是为了满足,高并发,小数据量的RPC调用,在大数据量下的表现并不好,建议使用RMI或http协议。
17、dubbo都支持什么协议,推荐使用哪种?
Dubbo://推荐
Rmi:
http:
webservice:
thrift:
memcached:
redis:
rest:
18、Dubbo需要web容器吗?
不需要,如果要用web容器,只会增加复杂性,也浪费资源。
19、Dubbo里面有哪几种节点角色?
Provider:暴露服务的提供方
Consumer:调用远程服务的服务消费方
Registry:服务注册与发现的注册中心
Mointor:统计服务调用次数和调用时间的监控中心
Container:服务运行容器
20、画一画服务注册与发现的流程图:
22、Dubbo默认使用的什么注册中心,还有别的选择吗?
推荐使用Zookeeper作为注册中心,还有redis,Multicast,simple注册中心,但不推荐。
23、Dubbo有哪几种配置方式?
1)Spring配置方式
2)Java Api配置方式
24、Dubbo的核心配置有哪些?
Dubbo:service 服务配置
Dubbo:refernce 引用配置
Dubbo:protocol 协议配置
Dubbo:application 应用配置
Dubbo:module 模块配置
Dubbo:registry 注册中以配置
Dubbo:monitor 监控中心配置
Dubbo:provider 服务提供方
Dubbo:consumer 服务消费方
Dubbo.mothod 方法配置
Dubbo。Argument 参数配置
25、在provider上可以配置的Consummer端的属性有哪些?
1)TimeOut:方法调用超时
2)、retries:失败重试次数,默认重试2次
3)、loadbalance:负载均衡算法,默认随机;
4)、actives:消费者端,最大并发调用限制;
26、Dubbo启动时如果依赖的服务不可用会怎样?
Dubbo缺省会在启动时检查依赖是否可用,不可用时会抛出异常,阻止Spring初始化完成,默认check=“true”,通过check=“false”可关闭检查;
27、Dubbo推存使用什么序列化框架?你知道的还有哪些?
推荐使用hessian序列化,还有Dubbo,fastJson,Java自带序列化。
28、Dubbo大有哪几种信群容错方案,默认是哪种?
容错集群方案 说明
Failover Cluster 失败自动切换,自动重试其它服务器(默认)
FailFast Cluster 快速失败,立即报错,只发起一次调用
Failsafe Cluster 失败安全,出现异常时,直接忽略
Failback Cluster 失败自动恢复,记录失败请求,定时重写
Forking Cluster 并行调用多个服务器,只要一个成功即返回
Broadcast Cluster 广播逐个调用所有提供者,任意一个报错则报错
29、Dubbo有哪几种负载均衡策略,默认是哪种?
负载均衡策略 说明
Random LoadBalance 随机,按权重设置随机概率(默认)
RoundRobin LoadBalance 轮询,按公约后的权重设置轮询比率
LeastActive LoadBalance 最少活跃调用数,相同活跃数的随机。
ConsistentHash LoadBalance 一致性hash,相同参数的请求总是发到同一提供者
30、注册了多个同一样的服务,如果测试指定的某一个服务呢?
可以配置环境点对点直连,绕过注册中心,将以服务接口为单位,忽略注册中心的提供者例表。
31、Dubbo支持服务多协议吗?
Dubbo允许配置多协议,在不同服务上支持不同协议,或同一服务上同时支持多种协议
32、当一个服务接口有多种实现时怎么做?
当一个接口有多种实现时,可以用group属性来分组,服务提供方和消费方都指下同一个group即可。
33、Dubbo支持服务降级吗?
Dubbo2.2.0以上版本支持。
34、Dubbo如何优雅停机?
Dubbo是通过JDK的ShutdownHook来完成优雅停机的,所以如果使kill -9 PID等强制关闭指令,是不会执行优雅停机的,只有通过kill PID时,才会执行。
35、服务提供者能实现失效踢出是什么原理?
服务失效踢出是基于Zookeeper的临时节点原理。
36、如何解决服务调用链过长的问题?
Dubbo可以使用Pinpoint和Apache Skywaklking(incubator)实现分布式服务追综,当然还有其他很多方案。
37、服务读写推荐的容错是怎么?
读操作建议使用Failover失败自动切换,默认重试两次其他服务器。
写操作建议使用Failfast快速失败,发一次调用失败就就即报错。
38、Dubbo必须依赖的包有哪些?
Dubbo必须依赖JDK,其他为可选
39、Dubbo的管理控制台能做什么?
管理控制台主要包括:
1、路由规则
2、动态配置
3、服务降级
4、访问控制
5、权重调整
6、负载均衡等
40、说说Dubbo服务暴露的过程。
Dubbo会在Spring实例化完bean之后,在刷新容器最后一步发现ContextRefreshEvent事件的时候,通知实现了ApplicationListener的ServiceBean类进行回调OnApplicationEvent事件方法,Dubbo会在这个方法中调用ServiceBean父类ServiceConfig的export方法,而该方法真正实现了服务(异步或非异常)发布;
41、你读过Dubbo的源码吗?
要了解Dubbo就必须看其源码,了解其原理,花点时间看下吧,网上也有很多教程,后续有时间我也会在公众号上分享Dubbo的源码。
42、你觉得用Dubbo好还是Spring Cloud好?
扩展性的问题,没有好坏,只有适合不适合,不过我更倾向Dubbo,Spring Cloud升级太快,组件更新太频繁,配置繁琐,还有我觉得没有Dubbo顺手的地方。。。