spring40源码
‘壹’ 史上最全 40 道 Dubbo 面试题及答案,看完碾压面试官!
Dubbo是阿里巴巴开源的高性能RPC分布式服务框架,现已成为Apache基金会孵化项目。使用Dubbo可以将核心业务抽取为服务,形成稳定的服务中心,提高业务复用性和灵活性,应对市场多变需求。Dubbo内部使用了Netty和Zookeeper,确保高性能和高可用性。
选择Dubbo的原因在于它是阿里开源项目,广泛应用于国内互联网公司,经过线上考验。使用Dubbo可以提高业务复用和扩展性,实现分布式架构,以应对更大并发流量。以下是Dubbo的核心特点和部分面试问题答案:
1. Dubbo是什么?
Dubbo是基于Java的高性能RPC分布式服务框架。
2. 为什么要用Dubbo?
Dubbo是阿里开源项目,具有高可用性和性能,适用于分布式架构,能够提高业务复用性和扩展性。
3. Dubbo和Spring Cloud的区别?
Dubbo和Spring Cloud在通信方式、组成部分和特定功能上有所不同。
4. Dubbo支持哪些协议?
Dubbo支持多种协议,推荐使用RPC通信。
5. Dubbo需要Web容器吗?
不需要,使用Web容器只会增加复杂性并浪费资源。
6. Dubbo内置了哪些服务容器?
Dubbo使用简单的Spring容器来暴露服务。
7. Dubbo有哪些节点角色?
节点角色包括提供者、消费者、注册中心、监控中心和容器。
8. 画出服务注册与发现流程图。
服务注册与发现流程图展示了Dubbo服务注册中心的运作。
9. Dubbo使用什么注册中心?
推荐使用Zookeeper作为注册中心,还有其他选择。
10. Dubbo的配置方式有哪些?
Dubbo支持Spring配置和Java API配置。
11. Dubbo的核心配置有哪些?
核心配置包括服务、引用、协议、应用、模块、注册中心、监控中心、提供者和消费者等。
12. 在Provider上可以配置哪些Consumer端属性?
可以配置超时、重试次数、负载均衡算法和并发限制。
13. Dubbo启动时依赖服务不可用会怎样?
Dubbo会在启动时检查依赖服务,不可用时抛出异常。
14. Dubbo推荐的序列化框架有哪些?
推荐Hessian序列化,还有Duddo、FastJson和Java序列化。
15. Dubbo的通信框架?
默认使用Netty框架,集成有Mina、Grizzly等。
16. Dubbo的集群容错方案有哪些?
包括失败自动切换、快速失败、失败安全、失败自动恢复和并行调用等。
17. Dubbo的负载均衡策略有哪些?
包括随机、轮询、最少活跃调用数和一致性Hash。
18. 多个服务注册时如何测试特定服务?
可以配置环境点对点直连,绕过注册中心。
19. Dubbo支持多协议吗?
支持配置多协议,允许在同一服务上使用多种协议。
20. 多种服务实现同一接口时如何处理?
使用group属性分组,服务提供方和消费方都指定同一group。
21. 如何兼容旧版本?
使用版本号过渡,多个不同版本服务注册,版本号不同不引用。
23. Dubbo服务调用是阻塞的吗?
默认阻塞,支持异步调用。
24. Dubbo支持分布式事务吗?
暂不支持,可能通过JTA/XA规范实现。
25. Dubbo telnet命令的作用?
用于服务治理,具体使用请参考文章。
26. Dubbo支持服务降级吗?
2.2.0以上版本支持。
27. 如何优雅停机?
通过JDK的ShutdownHook完成,强制关闭不会执行。
28. 服务失效踢出原理?
基于Zookeeper的临时节点原理。
29. 解决服务调用链过长?
使用Pinpoint和Apache Skywalking实现分布式服务追踪。
30. 服务读写容错策略?
读操作建议使用失败自动切换,写操作快速失败。
31. Dubbo必须依赖的包?
必须依赖JDK,其他为可选。
32. 管理控制台功能?
包含路由规则、动态配置、服务降级、访问控制、权重调整、负载均衡等功能。
33. Dubbo服务暴露过程?
Spring实例化bean后,在容器刷新最后一步发布事件,通知ServiceBean回调事件方法,实现服务发布。
34. Dubbo的维护状态?
2014年后停止维护,17年开始重新维护并进入Apache项目。
35. Dubbo和Dubbox的区别?
Dubbox是当当网基于Dubbo的扩展项目,增加了服务调用的RESTful特性等。
36. 其他分布式框架?
还有Spring Cloud、Facebook的Thrift、Twitter的Finagle等。
37. Dubbo能集成Spring Boot吗?
可以集成,项目地址为Apache Dubbo的GitHub仓库。
38. 遇到的问题?
在大数据量下性能不佳,建议使用RMI或HTTP协议。
39. 阅读Dubbo源码?
了解Dubbo原理需要阅读源码,网上有教程可供参考。
40. Dubbo和Spring Cloud的评价?
Spring Cloud组件频繁更新,配置复杂,与Dubbo相比,个人更倾向于使用Dubbo。
以上内容涵盖了Dubbo的常见面试问题和使用细节,希望对大家有所帮助。