今天给各位同学带来的是Springboot+Nacos+Dubbo集成实现服务间调用,缺少Nacos相关基础的同学可先查看以前的文章
Java SpringCloud系列(六) —— Linux下Nacos单机版/集群版搭建及注意事项
Java SpringCloud系列(七) —— SpringBoot2.1.X集成Nacos作为注册中心对应代码说明
Java SpringCloud系列(八) —— SpringBoot2.1.X集成Nacos作为配置中心及动态修改配置中心内容对应代码说明
废话不多说,我们搭建开始。
一、搭建思路描述
简单先描述一下整体的搭建思路,首先 我们需要创建三个module,分别为dubbo-demo-consumer(消费者)、dubbo-demo-provider(生产者)、dubbo-demo-api(API调用层)。
这三个Module的关系为
1.dubbo-demo-provider(生产者)依赖dubbo-demo-api(API调用层),然后implements实现API调用层中的接口,进行实际功能编写
2.dubbo-demo-consumer(消费者)依赖dubbo-demo-api(API调用层),然后将接口类注入,并调用对应的方法。
具体关系如下图所示
以上依赖模式其实默认遵循了dubbo的很多规范,我们以后详细展开讲解。
最终的项目结构如下图所示
全局图
dubbo-demo-api
dubbo-demo-consumer
dubbo-demo-provider
二、Dubbo集成
好了,思路我们已经梳理清晰了,接下来我们开始实际操作,关于Nacos的集成不是本文的重点,前面文章都有讲解,我们直接开始集成Dubbo。
2.1 基础多Module模块搭建
首先,我们先创建出一个多Module的SpringBoot项目,这里还是要强调一下,注意版本, 这里使用Springboot2.1.5配合dubbo2.7.3版本,搭建后的初始架构如下图
2.2 dubbo-demo-api模块编写
dubbo-demo-api模块的根本目的是用来做接口定义的,我们在此模块中添加一个接口。
2.2 dubbo-demo-provider模块编写
现在我们来编辑生产者,实现我们刚创建的接口的实际业务逻辑
2.1.1 添加依赖
首先我们先添加依赖
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// https://mvnrepository.com/artifact/org.apache.dubbo/dubbo
implementation group: 'org.apache.dubbo', name: 'dubbo', version: '2.7.3'
implementation group: 'org.apache.dubbo', name: 'dubbo-dependencies-bom', version: '2.7.3'
implementation group: 'org.apache.dubbo', name: 'dubbo-spring-boot-starter', version: '2.7.3'
implementation group: 'org.apache.dubbo', name: 'dubbo-registry-nacos', version: '2.7.3'
// https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery
implementation group: 'com.alibaba.cloud', name: 'spring-cloud-starter-alibaba-nacos-discovery', version: '2.1.2.RELEASE'
compile project(":dubbo-demo-api")
2.1.2 编写配置文件
然后,我们进行配置文件编写,对应配置说明都在代码注释中
#=================================基础配置========================================================
server:
port: 5730
spring:
application:
name: beyondli-cloud-dubbo-provider
cloud:
nacos:
discovery:
server-addr: ip:port
dubbo:
#dubbo名称 与spring.application.name一致
application:
id: beyondli-cloud-dubbo-provider
#nacos地址
registry:
address: nacos://ip:port
#协议相关配置
protocol:
name: dubbo
port: 20881
#所需扫描的包
scan:
base-packages: com.beyondli.*
2.1.3 代码编写
首先,开关处添加相关注解
@EnableDiscoveryClient
@EnableDubbo
之后,编写Service层相关代码
2.2 dubbo-demo-provider模块编写
2.2.1 添加依赖
与2.1.1一致 不做过多解释
2.2.2 编写配置文件
#=================================基础配置========================================================
server:
port: 5731
spring:
application:
name: beyondli-cloud-dubbo-consumer
cloud:
nacos:
discovery:
server-addr: ip:port
dubbo:
#dubbo名称 与spring.application.name一致
application:
id: beyondli-cloud-dubbo-consumer
registry:
address: nacos://ip:port
#无需生产者是否存在限制
consumer:
check: false
2.2.3 代码编写
首先,开关添加@EnableDiscoveryClient注解
之后,编写controller,调用所需接口,我们通过@Reference注解进行接口注入
三、项目启动测试
好了 现在我们启动dubbo-demo-provider和dubbo-demo-consumer两个项目,之后到我们的Nacos中查看我们的服务,会看到如下内容
现在,我们进行接口测试。
http://localhost:5731/dubbo/get/info?name=beyondLi71
大功告成