Dubbo面试题及答案整理100道(2022年最新版)

Dubbo面试题及答案整理100道(2022年最新版)
最新回答
夜雨入梦

2026-10-24 11:14:38

核心问题及答案整理1. Dubbo推荐用什么协议?
  • 推荐协议:Dubbo协议(默认)、RMI协议、Hessian协议等。
  • Dubbo协议特点:单一长连接+NIO异步通信,适合小数据量高并发场景(如服务间调用),但不适合传输大文件(因长连接复用,大包易阻塞)。
2. Dubbo核心功能有哪些?
  • 远程调用:支持RPC(远程过程调用)。
  • 服务治理:负载均衡、集群容错、服务降级。
  • 服务注册与发现:依赖注册中心(如Zookeeper)管理服务地址。
  • 序列化优化:支持Hessian2、JSON、Kryo等序列化方式。
3. Dubbo的主要应用场景?
  • 分布式服务架构:微服务拆分后的服务间通信。
  • 高并发系统:通过集群容错和负载均衡提升吞吐量。
  • 多协议支持:需兼容不同技术栈(如HTTP、Dubbo协议混合)。
4. Dubbo服务之间的调用是阻塞的吗?
  • 默认非阻塞:Dubbo协议基于NIO异步通信,调用端发起请求后不阻塞线程。
  • 同步/异步调用:可通过CompletableFuture实现异步,或配置async=true。
5. Dubbo服务集群配置(集群容错模式)
  • Failover(默认):失败自动切换,重试其他服务器。
  • Failfast:快速失败,立即报错。
  • Failsafe:忽略错误,适用于日志等非核心场景。
  • Forking:并行调用多个服务器,任一成功即返回。
  • Broadcast:广播所有服务器,任一报错则抛出异常。
6. Dubbo默认采用注册中心?
  • 默认注册中心:Zookeeper(CP模型,强一致性)。
  • 其他选择:Nacos(AP模型,支持配置中心)、Redis、Consul等。
7. Dubbo支持服务降级吗?
  • 支持:通过mock参数实现降级。

    示例:<dubbo:reference interface="com.foo.BarService" mock="return null" />

    场景:服务不可用时返回默认值或空结果。

8. RPC关键技术及主流框架
  • 关键技术:

    服务寻址:注册中心(如Zookeeper)管理服务地址。

    序列化:Hessian2、Protobuf、JSON等。

    通信框架:Netty(Dubbo默认)、Mina。

  • 主流框架:Dubbo、gRPC、Thrift、Spring Cloud(基于REST)。
9. Dubbo管理控制台功能
  • 服务治理:动态调整权重、路由规则。
  • 监控:调用次数、响应时间、错误率统计。
  • 配置管理:修改参数无需重启服务。
10. 如何解决服务调用链过长的问题?
  • 方案:

    服务拆分:按业务域垂直拆分。

    异步化:使用CompletableFuture解耦调用链。

    网关聚合:通过API网关合并多个请求。

    链路追踪:集成SkyWalking定位瓶颈。

11. Dubbo用到的设计模式
  • 工厂模式:Protocol、Invoker等接口的实现。
  • 代理模式:JDK动态代理生成服务代理对象。
  • 装饰器模式:Filter链实现AOP功能。
  • 观察者模式:注册中心监听服务变更事件。
12. Dubbo类似框架
  • Spring Cloud:基于HTTP的微服务全家桶。
  • gRPC:Google开源的高性能RPC框架。
  • Thrift:Facebook的跨语言RPC框架。
13. Dubbo集成SpringBoot
  • 支持:通过dubbo-spring-boot-starter快速集成。

    示例:添加依赖后,使用@DubboService和@DubboReference注解。

14. Dubbo协议优缺点
  • 优点:单一长连接减少连接数,NIO异步提升并发。
  • 缺点:不适合传输大文件(如超过1MB),需改用HTTP协议。
15. 负载均衡策略
  • Random(默认):随机分配请求。
  • RoundRobin:轮询分配。
  • LeastActive:优先调用活跃数低的服务器。
  • ConsistentHash:相同参数总是路由到同一服务器。
16. Dubbo与Dubbox区别
  • Dubbox:当当网基于Dubbo 2.8.x扩展,支持REST协议和JSON序列化。
  • Dubbo:原生版本,2.7.x后由Apache维护。
17. 超时设置方式
  • 全局设置:<dubbo:consumer timeout="5000" />
  • 服务级设置:<dubbo:reference interface="..." timeout="2000" />
  • 方法级设置:@Reference(timeout = 1000)
18. 序列化框架
  • 默认:Hessian2(二进制,性能较好)。
  • 其他:JSON(可读性好)、Kryo(Java专用,高性能)、Protobuf(跨语言)。
19. 服务注册与发现流程
  1. 服务提供者启动时向注册中心注册服务。
  2. 消费者从注册中心订阅服务地址。
  3. 注册中心推送地址变更通知消费者。
  4. 消费者缓存地址并直接调用提供者。
20. Dubbo与Spring Cloud区别
  • 协议:Dubbo基于RPC,Spring Cloud基于HTTP。
  • 生态:Spring Cloud提供配置中心、网关等组件。
  • 复杂度:Dubbo更轻量,Spring Cloud功能全面但学习成本高。
21. 核心组件
  • Registry:服务注册中心。
  • Provider:服务提供者。
  • Consumer:服务消费者。
  • Monitor:监控中心。
  • Container:服务运行容器。
22. 架构设计分层
  • 接口服务层:定义服务接口。
  • 配置层:配置协议、注册中心等。
  • 代理层:生成代理对象。
  • 远程调用层:协议编码、网络传输。
  • 信息交换层:序列化与反序列化。
23. 优雅停机
  • 步骤:

    停止接收新请求。

    等待正在执行的请求完成。

    注销服务并释放资源。

  • 配置:<dubbo:service destroy="true" />
24. 分布式事务支持
  • 部分支持:通过@Transactional注解结合本地事务表,或集成Seata等框架。
25. 安全机制
  • Token验证:服务提供者校验消费者Token。
  • IP白名单:限制可访问的IP范围。
  • SSL加密:配置HTTPS协议传输数据。