Spring Boot 集成 Dubbo 实现 RPC 微服务通信的核心是接口统一、角色明确、注册中心联动;需定义公共接口模块(如 dubbo-api),提供方用 @DubboService 实现并注册,消费方用 @DubboReference 引用,依赖 Nacos 或 ZooKeeper 等注册中心实现自动服务发现与调用。

Spring Boot 集成 Dubbo 实现 RPC 微服务通信,核心是靠“接口统一 + 角色明确 + 注册中心联动”,不写一行网络通信代码,就能让不同服务像调用本地方法一样互相调用。
定义公共接口模块
这是整个 RPC 调用的前提——提供方和消费方必须共享同一套接口定义,且该模块里只放接口和 DTO,不能含实现类或 Spring 注解。
- 新建独立 Maven 模块(如 dubbo-api),打包为 JAR
- 接口使用标准 Java 语法,例如:public interface UserService { User getById(Long id); }
- provider 和 consumer 项目都通过
<dependency>引入这个 JAR
搭建服务提供者
提供者负责实现接口,并把服务注册到注册中心,供其他服务发现。
- 引入依赖:
dubbo-spring-boot-starter+ 注册中心客户端(如spring-cloud-starter-alibaba-nacos-discovery或curator-recipes) - 实现接口类,加上 @DubboService 注解(Dubbo 3.x 推荐写法)
- 在
application.yml中配置:dubbo.application.name: user-provider-
dubbo.registry.address: nacos://127.0.0.1:8848(或zookeeper://127.0.0.1:2181) -
dubbo.protocol.name: dubbo,端口可设为-1自动分配 dubbo.scan.base-packages: com.example.service.impl
构建服务消费者
消费者不写实现,只通过注解远程引用已注册的服务,调用方式与本地方法完全一致。
立即学习“Java免费学习笔记(深入)”;
- 同样引入 dubbo-api 和
dubbo-spring-boot-starter - 在需要调用的位置,用 @DubboReference 注入接口,例如:
@DubboReference(timeout = 5000) private UserService userService; - 配置中保持
dubbo.application.name唯一,dubbo.registry.address与提供者一致 - 无需手动处理序列化、连接池或负载均衡,Dubbo 自动完成服务发现与调用路由
注册中心选型建议
注册中心是服务发现的枢纽,直接影响可用性与运维效率。
- Nacos:推荐新项目使用,集服务发现 + 配置管理于一体,控制台直观,支持健康检查、权重调整和动态配置推送
- ZooKeeper:适合对强一致性要求高的场景,稳定性久经考验,但需单独运维,无原生配置中心能力
- 避免直连模式用于生产环境,它绕过注册中心,失去服务自动发现与故障转移能力


















