之前的文章中,无论我们学习 Eureka、Consul 还是 Nacos,负责服务间通信的功能都是由 Ribbon 来完成的,接下来我们使用 Dubbo 来替换 Ribbon。
本文作者:哈喽沃德先生,欢迎关注哈喽沃德先生
一、聚合工程
dubbo-demo 聚合工程。SpringBoot 2.3.0.RELEASE、Spring Cloud Hoxton.SR5。
项目结构如下图,简单介绍一下:
service-api:服务接口
product-service:商品服务,服务提供者,提供了 /product/list 接口
order-service:订单服务,服务消费者,远程调用商品服务
1、依赖关系
dubbo-demo 的 pom.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.example dubbo-demo pom 1.0-SNAPSHOT service-api product-service order-service org.springframework.boot spring-boot-starter-parent 2.3.0.RELEASE Hoxton.SR5 2.1.0.RELEASE org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import com.alibaba.cloud spring-cloud-alibaba-dependencies ${spring-cloud-alibaba.version} pom import
service-api 的 pom.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> dubbo-demo com.example 1.0-SNAPSHOT 4.0.0 service-api org.projectlombok lombok
product-service 需要依赖 Nacos 和 Dubbo 的依赖,还有 service-api 的依赖,完整依赖如下:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> dubbo-demo com.example 1.0-SNAPSHOT 4.0.0 product-service com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery com.alibaba.cloud spring-cloud-alibaba-dubbo org.springframework.boot spring-boot-starter-web com.example service-api 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine
order-service 需要依赖 Nacos 和 Dubbo 的依赖,还有 service-api 的依赖,完整依赖如下:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> dubbo-demo com.example 1.0-SNAPSHOT 4.0.0 order-service com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery com.alibaba.cloud spring-cloud-alibaba-dubbo org.springframework.boot spring-boot-starter-web com.example service-api 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine
二、定义服务接口
我们在 service-api 模块中定义实体类和服务接口信息。
1、实体类
Product.java
package com.example.product.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; @Data @NoArgsConstructor @AllArgsConstructor public class Product implements Serializable { private Integer id; private String productName; private Integer productNum; private Double productPrice; }
Order.java
package com.example.product.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; import java.util.List; @Data @NoArgsConstructor @AllArgsConstructor public class Order implements Serializable { private Integer id; private String orderNo; private String orderAddress; private Double totalPrice; private ListproductList; }
2、服务接口
package com.example.product.service; import com.example.product.pojo.Product; import java.util.List; /** * 商品服务 */ public interface ProductService { /** * 查询商品列表 * * @return */ ListselectProductList(); }
三、定义服务提供者
配置文件
配置文件需要配置 Nacos 注册中心和 Dubbo 相关信息,核心配置如下:
server: port: 7070 # 端口 spring: application: name: product-service # 应用名称 # 配置 Nacos 注册中心 cloud: nacos: discovery: enabled: true # 如果不想使用 Nacos 进行服务注册和发现,设置为 false 即可 server-addr: 127.0.0.1:8848 # Nacos 服务器地址,单机版 # Dubbo dubbo: # 提供方应用信息,用于计算依赖关系 application: name: product-service # 使用 nacos 注册中心暴露服务地址 registry: protocol: nacos address: spring-cloud://localhost # 用 dubbo 协议在 20880 端口暴露服务 protocol: name: dubbo port: 20880 # 扫描需要暴露的服务,可以被 @EnableDubbo 注解替代 #scan: # base-packages: com.example.service
四、定义服务消费者
省略
五、测试
省略,如需学习或者获取资料完整的springcloud alibaba视频教程和java微服务课程,请点击此处。