spring cloud alibaba dubbo 是阿里巴巴开源的 dubbo 微服务框架 与 spring cloud 生态 的深度集成方案。它将 dubbo 的高性能 rpc 能力与 spring cloud 的微服务治理、配置管理和服务注册发现功能有机结合,帮助开发者快速构建可扩展、可维护的微服务系统。
核心特点
- 高性能 rpc 调用
- 基于 dubbo 的高效远程调用框架,实现服务间低延迟、高吞吐量的通信,支持多种协议(如 dubbo、rest、grpc 等)和序列化方式。
- 无缝集成 spring cloud
- spring cloud alibaba dubbo 提供自动化配置,能够与 spring cloud 的服务注册中心(如 nacos、zookeeper)、配置中心、负载均衡和熔断机制无缝配合。
- 服务治理能力
- 支持服务注册与发现、动态配置、服务分组、版本控制、路由规则和服务降级,为微服务的稳定运行提供全面保障。
- 注解驱动开发
- 提供注解如
@dubboservice和@dubboreference,简化服务提供者和消费者的开发流程,降低 rpc 调用的复杂度。
- 提供注解如
- 灵活的配置管理
- 与 nacos 等配置中心集成,实现服务参数动态化管理,可根据不同环境动态切换配置,提升系统灵活性和可维护性。
适用场景
- 构建大规模、高并发的企业微服务系统
- 多语言服务调用和跨服务通信场景
- 需要高性能 rpc 支持和服务治理能力的微服务架构
一、项目结构
dubbo-boot4-demo
├── pom.xml ← 父工程
├── dubbo-provider-api
│ └── pom.xml
│ └── src/main/java
│ └── com/example/api
│ └── userservice.java
├── dubbo-provider
│ └── pom.xml
│ └── src/main/java
│ └── com/example/provider
│ ├── providerapplication.java
│ └── service
│ └── userserviceimpl.java
│ └── src/main/resources
│ └── application.yml
└── dubbo-consumer
└── pom.xml
└── src/main/java
└── com/example/consumer
├── consumerapplication.java
└── controller
└── usercontroller.java
└── src/main/resources
└── application.yml二、父工程 pom.xml
<project>
<modelversion>4.0.0</modelversion>
<groupid>com.example</groupid>
<artifactid>dubbo-boot4-demo</artifactid>
<version>1.0.0</version>
<packaging>pom</packaging>
<modules>
<module>dubbo-provider-api</module>
<module>dubbo-provider</module>
<module>dubbo-consumer</module>
</modules>
<properties>
<java.version>25</java.version>
<spring-boot.version>4.0.0</spring-boot.version>
<dubbo.version>3.3.2</dubbo.version>
<nacos.version>2.4.1</nacos.version>
</properties>
<dependencymanagement>
<dependencies>
<!-- spring boot bom -->
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-dependencies</artifactid>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- dubbo bom -->
<dependency>
<groupid>org.apache.dubbo</groupid>
<artifactid>dubbo-bom</artifactid>
<version>${dubbo.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencymanagement>
</project>三、api 模块(公共接口)
dubbo-provider-api/pom.xml
<project>
<parent>
<groupid>com.example</groupid>
<artifactid>dubbo-boot4-demo</artifactid>
<version>1.0.0</version>
</parent>
<artifactid>dubbo-provider-api</artifactid>
<dependencies>
<!-- 只放接口,不依赖任何实现 -->
</dependencies>
</project>userservice.java
package com.example.api;
public interface userservice {
string getusername(long id);
}四、provider 服务端
dubbo-provider/pom.xml
<project>
<parent>
<groupid>com.example</groupid>
<artifactid>dubbo-boot4-demo</artifactid>
<version>1.0.0</version>
</parent>
<artifactid>dubbo-provider</artifactid>
<dependencies>
<dependency>
<groupid>com.example</groupid>
<artifactid>dubbo-provider-api</artifactid>
<version>1.0.0</version>
</dependency>
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter</artifactid>
</dependency>
<dependency>
<groupid>org.apache.dubbo</groupid>
<artifactid>dubbo-spring-boot-starter</artifactid>
</dependency>
<dependency>
<groupid>com.alibaba.nacos</groupid>
<artifactid>nacos-client</artifactid>
<version>${nacos.version}</version>
</dependency>
</dependencies>
</project>userserviceimpl.java
package com.example.provider.service;
import com.example.api.userservice;
import org.apache.dubbo.config.annotation.dubboservice;
@dubboservice
public class userserviceimpl implements userservice {
@override
public string getusername(long id) {
return "user-" + id;
}
}application.yml
spring:
application:
name: dubbo-provider # spring boot 应用名,用于标识当前服务(生产者)
server:
port: 8080 # http 服务端口(如果有 rest 接口)
dubbo:
application:
name: ${spring.application.name} # dubbo 应用名,与 spring boot 名一致
protocol:
name: dubbo # dubbo 协议
port: 20880 # dubbo 服务端口,生产环境建议固定端口
registry:
address: nacos://127.0.0.1:8848 # 注册中心地址
provider:
timeout: 5000 # 默认超时时间(毫秒)
retries: 0 # 默认不重试,生产环境可根据业务调整四、consumer 模块
dubbo-consumer/pom.xml
<project>
<parent>
<groupid>com.example</groupid>
<artifactid>dubbo-boot4-demo</artifactid>
<version>1.0.0</version>
</parent>
<artifactid>dubbo-consumer</artifactid>
<dependencies>
<dependency>
<groupid>com.example</groupid>
<artifactid>dubbo-provider-api</artifactid>
<version>1.0.0</version>
</dependency>
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-web</artifactid>
</dependency>
<dependency>
<groupid>org.apache.dubbo</groupid>
<artifactid>dubbo-spring-boot-starter</artifactid>
</dependency>
<dependency>
<groupid>com.alibaba.nacos</groupid>
<artifactid>nacos-client</artifactid>
<version>${nacos.version}</version>
</dependency>
</dependencies>
</project>usercontroller.java
package com.example.consumer.controller;
import com.example.api.userservice;
import org.apache.dubbo.config.annotation.dubboreference;
import org.springframework.web.bind.annotation.getmapping;
import org.springframework.web.bind.annotation.restcontroller;
@restcontroller
public class usercontroller {
@dubboreference
private userservice userservice;
@getmapping("/user")
public string user() {
return userservice.getusername(1l);
}
}application.yml
spring:
application:
name: dubbo-consumer # spring boot 应用名,用于标识消费者
server:
port: 8081 # http 服务端口(如果有 rest 接口)
dubbo:
application:
name: ${spring.application.name} # dubbo 应用名
registry:
address: nacos://127.0.0.1:8848 # 注册中心地址
consumer:
check: false # 启动时不检查服务提供者是否存在(开发环境用)
timeout: 5000 # 调用超时时间(毫秒)
retries: 2 # 调用失败重试次数
loadbalance: roundrobin # 负载均衡策略:轮询到此这篇关于spring cloud微服务之间调用dubbo的文章就介绍到这了,更多相关spring cloud微服务调用dubbo内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论