之前在springboot2.x入门专栏里写过最近再带着团队改造一个历史产物项目,进行spring mvc 单体应用向springboot2.x+dubbo3的整改。这里说下为什么选择dubbo,而不用spring cloud,仅仅是因为这个项目组的成员们对dubbo2比较熟悉,其实针对这种中小型项目,我是比较倾向于能够快速成型的spring cloud,但是无奈有时间要求,所以就直接dubbo3了。
写这个小专辑是因为网上关于 springboot2.x整合dubbo3的文章太少了,好多还是用的已经不建议使用的版本,jar包哐哐往pom里面引,能跑起来但是一堆jar包冲突就发文章出来误导人了,所以我感觉我必须要站出来了。
本次小专辑会分为3篇
内容: dubbo成为Apache顶级项目之后,之前的com.alibaba的包已经不建议使用了,但是网上关于org.apache.dubbo的使用要么pom里面天花乱坠,要么就是老版本新版本混着来,看着相当难受。这篇就用最简单的配置,最简洁的说明完成dubbo3的整合。
内容:这里为什么会插一篇关于maven的文章,是因为在项目过程中感觉大家除了专注于编码对其他的事情知之甚少了,这样怎么能够独挡一面呢。所以我就遇到啥就给大家渗透啥吧。这一篇里会给大家详细讲解如何去建父子项目,如何利用pom里的插件控制打包的环境,如何利用dependencyManagemet统一管理包版本
内容:微服务没有链路追踪怎么能行,靠肉眼判别是哪个请求吗?这篇就讲解了最简单的链路追踪实现,利用dubbo.rpc.filter来实现rpc的链路标识传递。
接下来我们就来进入今天的主题,springboot2.x整合dubbo3,看之前我先说一下,我也不图你不洗澡,我也不图你岁数大,我就图你们的点赞评论转发。
今天不展开讲这个聚合项目的创建过程,下一篇会讲,api是放的service,common是放的公用方法,consumer是放的消费者,provider是放的服务提供者。
org.springframework.boot
spring-boot-starter-web
org.apache.dubbo
dubbo-spring-boot-starter
org.apache.curator
curator-x-discovery
com.s8d
common
com.s8d
api
我们需要把common和依赖进来,对于dubbo的整合我们只需要dubbo-spring-boot-starter和curator-x-discovery即可,
Apache Curator是一个比较完善的ZooKeeper客户端框架,通过封装的一套高级API 简化了ZooKeeper的操作。通过查看官方文档,可以发现Curator主要解决了三类问题:
Curator主要从以下几个方面降低了zk使用的复杂性:
yml配置
server:
port: 9104
dubbo:
application:
name: provider
protocol:
name: dubbo
port: 21880
registry:
protocol: zookeeper
address: 192.168.174.128:2181
timeout: 20000
version: 1.0.0
scan:
base-packages: com.s8d.provider
service实现类编写
import com.s8d.api.service.TestService;
import org.apache.dubbo.config.annotation.DubboService;
@DubboService
public class TestServiceImpl implements TestService {
@Override
public String test() {
return "success";
}
}
这里我们平时写的service换成了DubboService
到这里服务提供者的全部代码就已经完成了,服务消费者的pom和提供者的是一致的,我就不放出来了,yml配置稍有不同,见下方
server:
port: 9103
dubbo:
application:
name: consumer
registry:
protocol: zookeeper
address: 192.168.174.128:2181
timeout: 20000
version: 1.0.0
scan:
base-packages: com.s8d.consumer
调用服务提供者
@RestController
public class TestController {
@DubboReference
TestService testService;
@GetMapping("test")
public String test() {
return testService.test();
}
}
在调用的时候,之前我们用@Resource替换为@DubboReference
打开dubbo-admin,我们可以看到已经成功注册了。
使用postman,也能看到正确的回执, springboot2.x整合dubbo3就是这么简单。
大家有问题可以关注我的公众号:codesls可以获取文章内容的源码,回复s8d即可。