Spring Boot3 中如何整合 Dubbo 实现简单的微服务调用?

360影视 欧美动漫 2025-05-15 00:22 1

摘要:在当今的互联网大厂后端开发领域,微服务架构已成为构建大型应用的主流方式。Spring Boot3 以其强大的简化开发特性备受青睐,而 Dubbo 作为高性能、轻量级的开源 RPC 框架,在微服务通信与治理方面表现卓越。将两者整合,能够助力开发者高效构建稳定、可

在当今的互联网大厂后端开发领域,微服务架构已成为构建大型应用的主流方式。Spring Boot3 以其强大的简化开发特性备受青睐,而 Dubbo 作为高性能、轻量级的开源 RPC 框架,在微服务通信与治理方面表现卓越。将两者整合,能够助力开发者高效构建稳定、可扩展的分布式系统。那么,究竟如何在 Spring Boot3 中整合 Dubbo 来实现简单的微服务调用呢?接下来,我们就逐步深入探讨。

环境搭建

首先,确保你的开发环境中安装了 Java 17 及以上版本,因为 Spring Boot3 需要 Java 17 的支持。同时,安装好 Maven 或 Gradle 构建工具,方便管理项目依赖。

创建 Spring Boot3 项目

通过 Spring Initializr(https://start.spring.io/ )创建一个新的 Spring Boot3 项目。在创建过程中,选择合适的项目元信息,如项目名称、包名等。并且,务必勾选 Spring Web 依赖,因为后续我们需要通过 HTTP 来访问微服务接口。

创建好 Spring Boot 项目后,在项目的 pom.xml 文件(如果使用 Maven)或 build.gradle 文件(如果使用 Gradle)中添加 Dubbo 相关依赖。Dubbo 3 相比之前的版本,在包引入等方面有了优化,现在我们只需要引入两个关键包:dubbo-spring-boot-starter 和 dubbo-zookeeper-spring-boot-starter 。

如果使用 Maven,在 pom.xml 中添加如下依赖:

org.apache.dubbodubbo-spring-boot-starter3.2.1 org.apache.dubbodubbo-zookeeper-spring-boot-starter3.2.1

如果使用 Gradle,在 build.gradle 中添加:

implementation 'org.apache.dubbo:dubbo-spring-boot-starter:3.2.1' // 请根据实际情况选择最新版本implementation 'org.apache.dubbo:dubbo-zookeeper-spring-boot-starter:3.2.1' // 请根据实际情况选择最新版本

定义服务接口

创建一个 Java 接口,该接口将定义我们要提供的微服务功能。例如,创建一个名为HelloService的接口,其中包含一个sayHello方法:

package com.example.demo.service;public interface HelloService {String sayHello(String name);}

实现服务接口

接着,创建一个类来实现上述接口。在 Dubbo 3 中,使用@DubboService注解来标记该服务实现类,以区别于 Spring 的@Service注解(从 3.0 版本开始,Dubbo 不再使用@Service注解来标识 Dubbo 服务,避免与 Spring 的注解混淆)。

package com.example.demo.service.impl;import com.example.demo.service.HelloService;import org.apache.dubbo.config.annotation.DubboService;import org.springframework.stereotype.Component;@DubboService@Componentpublic class HelloServiceImpl implements HelloService {@Overridepublic String sayHello(String name) {return "Hello, " + name + "! This is a Dubbo service in Spring Boot3.";}}

在 Spring Boot 的配置文件(application.yml 或 application.properties)中进行 Dubbo 相关配置。

基础配置

配置应用名称、Dubbo 协议和端口等基础信息。这里我们将 Dubbo 协议名称设置为dubbo,端口设置为-1,表示让 Dubbo 自动分配可用端口。

dubbo:application:name: dubbo-springboot3-demoprotocol:name: dubboport: -1

注册中心配置

Dubbo 需要一个注册中心来管理服务的注册与发现。常见的注册中心有 Zookeeper、Nacos 等,这里我们以 Zookeeper 为例。假设你的 Zookeeper 服务器地址为127.0.0.1:2181,在配置文件中添加如下配置:

dubbo:registry:address: zookeeper://127.0.0.1:2181

包扫描配置

告诉 Dubbo 扫描哪些包来查找服务实现类,以便将其注册到注册中心。假设我们的服务实现类在com.example.demo.service.impl包下,配置如下:

dubbo:scan:base-packages: com.example.demo.service.impl

创建服务消费者

创建一个新的 Spring Boot 项目作为服务消费者,同样添加 Dubbo 相关依赖以及 Spring Web 依赖。

引入服务接口

在服务消费者项目中,需要引入服务提供者定义的服务接口HelloService。可以通过 Maven 或 Gradle 的依赖管理,将服务提供者项目的接口模块引入到消费者项目中。

配置消费者

在消费者项目的配置文件中,配置 Dubbo 相关信息,与服务提供者类似,包括应用名称、注册中心地址等。

dubbo:application:name: dubbo-springboot3-consumer-demoregistry:address: zookeeper://127.0.0.1:2181

调用服务

在消费者项目中,创建一个控制器类,使用@DubboReference注解(从 3.0 版本开始,@Reference注解废弃,使用@DubboReference注解来引用远程服务,以区别于 Spring 的@Reference注解)将远程服务注入到控制器中,然后就可以像调用本地方法一样调用远程服务了。

package com.example.demo.controller;import com.example.demo.service.HelloService;import org.apache.dubbo.config.annotation.DubboReference;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloController {@DubboReferenceprivate HelloService helloService;@GetMapping("/hello")public String hello(@RequestParam String name) {return helloService.sayHello(name);}}启动与测试

启动 Zookeeper

确保 Zookeeper 服务器已经启动并正常运行。如果是本地开发,启动 Zookeeper 的命令通常为(假设你已经正确配置了 Zookeeper 环境变量):

zkServer.sh start

启动服务提供者

启动 Spring Boot 服务提供者项目,启动类上需要添加@EnableDubbo注解(Dubbo 3 需要显式添加该注解,在 2.X 版本时部分场景不需要),以开启 Dubbo 的支持。

package com.example.demo;import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication@EnableDubbopublic class DemoApplication {public static void main(String args) {SpringApplication.run(DemoApplication.class, args);}}

服务提供者启动后,会将自己的服务注册到 Zookeeper 注册中心。

启动服务消费者

启动 Spring Boot 服务消费者项目。消费者启动后,会从 Zookeeper 注册中心获取服务提供者的地址信息,并建立连接。

测试调用

打开浏览器或使用工具(如 Postman),访问服务消费者的接口,例如:http://localhost:8080/hello?name=world 。如果一切配置正确,你将看到服务提供者返回的结果:Hello, world! This is a Dubbo service in Spring Boot3. 。

通过以上步骤,我们成功地在 Spring Boot3 中整合了 Dubbo,实现了简单的微服务调用。在实际项目中,你还可以根据需求进一步优化和扩展,如配置 Dubbo 的负载均衡策略、超时时间、重试次数等,以满足不同的业务场景。希望这篇文章能帮助各位互联网大厂后端开发人员快速上手 Spring Boot3 与 Dubbo 的整合开发。

来源:从程序员到架构师一点号

相关推荐