spring boot 集成 dubbo 实现微服务 rpc 调用的核心是统一接口定义、明确提供者/消费者角色、选用注册中心(如 nacos 或 zookeeper)并正确配置协议与扫描路径,关键在于依赖、注解和配置的协同。

Spring Boot 集成 Dubbo 实现微服务 RPC 调用,核心在于统一接口定义、明确角色划分(提供者/消费者)、选用注册中心(如 Nacos 或 ZooKeeper),并正确配置协议与扫描路径。整个过程不依赖复杂编码,关键在依赖、注解和配置三者的协同。
准备公共接口模块
这是 RPC 调用的基础——服务提供方和消费方必须共享同一套接口定义,且**不能包含实现类**。
- 新建独立 Maven 模块(如 dubbo-api),只放接口和 DTO 类
- 接口需使用标准 Java 接口语法,避免 Spring 特有注解(如
@Service) - 例如:
public interface UserService { User getById(Long id); } - 该模块打成 JAR 包,被 provider 和 consumer 同时引入
搭建服务提供者
提供者负责实现接口,并将服务注册到注册中心,供其他服务发现调用。
- 添加依赖:
dubbo-spring-boot-starter+ 注册中心客户端(如spring-cloud-starter-alibaba-nacos-discovery或curator-recipes) - 实现接口类,加上
@DubboService注解(Dubbo 3.x 推荐)或@Service(interfaceClass = Xxx.class)(兼容老写法) - 在
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,port: 20880(可设为 -1 自动分配) dubbo.scan.base-packages: com.example.service.impl
构建服务消费者
消费者不实现接口,而是通过注解远程引用已注册的服务,调用方式与本地方法一致。
- 同样引入
dubbo-api和 Dubbo Starter 依赖 - 在需要调用的位置,使用
@DubboReference注入接口(Dubbo 3.x 推荐) - 示例:
@DubboReference(timeout = 5000) private UserService userService; - 配置中需保持
dubbo.application.name唯一,dubbo.registry.address与提供者一致 - 无需手动管理连接或序列化,Dubbo 自动完成服务发现、负载均衡与反序列化
注册中心选型与验证要点
注册中心是 Dubbo 服务发现的枢纽,选型直接影响可用性与运维成本。
- Nacos:推荐用于新项目,集服务发现+配置管理于一体,控制台友好,支持健康检查与权重调整
- ZooKeeper:成熟稳定,适合对强一致性要求高的场景,但运维稍重,无原生配置中心能力
- 启动后,访问 Nacos 控制台(
http://localhost:8848/nacos)或 Dubbo Admin(需单独部署),确认服务已注册成功 - 若调用超时或 No provider,优先检查:
application.name是否重复、网络是否连通、注册地址拼写是否正确、包扫描路径是否覆盖实现类











