当前位置: 代码网 > it编程>编程语言>Java > Spring Cloud微服务之间调用Dubbo的详细过程

Spring Cloud微服务之间调用Dubbo的详细过程

2026年02月13日 Java 我要评论
spring cloud alibaba dubbo 是阿里巴巴开源的 dubbo 微服务框架 与 spring cloud 生态 的深度集成方案。它将 dubbo 的高性能 rpc 能力与 spri

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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com