news 2026/7/14 23:33:26

SpringCloud 整合 Dubbo

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringCloud 整合 Dubbo

目录

1、介绍

2、代码实现

2.1 抽取公共模块

2.2 改造服务提供者

2.3 改造服务消费者

3、启动测试


1、介绍

Dubbo有两种使用方式:

1、基于SOA的思想,将一个单体架构拆分为web层和Services层,然后web和services借助Dubbo框架进行数据交互。

2、SpringCloud 整合Dubbo。

这篇博客所要介绍的就是第二种。

首先我们要想,为什么SpringCloud 要整合Dubbo

在SpringCloud中会有多个微服务,不同的微服务访问一样的数据库,每个微服务都需要进行服务注册和服务发现,这个时候就要用到注册中心Nacos。

在微服务当中,各个服务之间如果要进行通信,要进行调用的话,使用的就是Feign。

那Feign这种协议究竟好不好呢?

Feign其实基于Http协议(应用层),调用的是REST风格的API 来完成数据交互容易成为性能瓶颈。

Dubbo框架的通信协议采用TCP协议(数据传输层)。

看下图:

我们可以看到Http 协议位于七层网络协议的应用层,TCP协议位于数据传输层,可以看到Http协议就是对TCP协议的封装,由于它做了更深层次的封装,所以它的效率可能就会低一些,特别是在高并发场景下性能可能会成为瓶颈。

所以这个时候,有的开发人员就会想了,既然Feign这个协议效率会存在瓶颈,我为什么不把Dubbo拿进来替换Feign呢?

哎,这个就是Dubbo 在SpringCloud 中的意义。

Dubbo框架的通信协议采用RPC协议来进行数据传输的,属于传输层协议,Dubbo默认通过Netty构造TCP长连接的方式进行通信,性能较高,使用SpringCloud整合Dubbo,那就是强强联合。

借助Spring Cloud Alibaba提供了微服务开发的一站式解决方案,我们可以很轻松的完成Dubbo的整合。

在SpringCloud 中加入了 Dubbo,我们的架构整体就会发生了变化,我们的客户端请求网关,网关将请求路由到微服务,微服务呢需要进行注册中心的配置以及配置中心的管理,当然,各个微服务之间进行调用就不再是Feign,而是Dubbo。

2、代码实现

介绍完Dubbo在springcloud 中 的作用,接下来我们就进入代码实战。

这里使用的Demo是以前写过的。具体看这个专栏的文章:SpringCloud_一切总会归于平淡的博客-CSDN博客

以前我们是使用Feign进行服务之间的通信,现在我们将其改造为Dubbo。

2.1 抽取公共模块

抽取公共模块其实是比较简单的,我们来看看实现步骤:

1、创建dubbo-api模块

2、抽取公共模块

这里的实体类其实也可以放到另一个模块里然后进行引入,但是我太懒了,直接拉到dubbo-api模块来了,大家根据自己的习惯来吧。

2.2 改造服务提供者

我们接下来去修改user-service实现dubbo-api中的UserService接口。并使用@DubboService注解替换@Service对外暴露dubbo服务。

1、首先我们要先在user-service 中引入依赖。

<!--nacos注册中心的依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--springcloud alibaba dubbo依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId> </dependency> <dependency> <groupId>com.jie.demo</groupId> <artifactId>dubbo-api</artifactId> <version>1.0</version> </dependency>

2、编写UserService实现类。

这样我们就向外暴露一个Dubbo服务。

3、编写application.yml 文件

dubbo: protocol: name: dubbo port: 20881 registry: address: spring-cloud://localhost #使用SpringCloud中的注册中心 scan: base-packages: com.jie.user.service #dubbo中包扫描

2.3 改造服务消费者

1、首先在order-service 中引入依赖。

<!--nacos注册中心的依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--springcloud alibaba dubbo依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId> </dependency> <dependency> <groupId>com.jie.demo</groupId> <artifactId>dubbo-api</artifactId> <version>1.0</version> </dependency>

2、使用@DubboReference引入Dubbo服务,调用远程服务。

3、编写application.yml 文件

#dubbo配置 dubbo: registry: address: spring-cloud://localhost #使用cloud的注册中心 consumer: check: false #dubbo默认有启动检查 retries: 0 #dubbo内置的重试机制

3、启动测试

重启提供者和消费者的服务,然后发送一个请求测试。

注意:

实体类一定要实现序列化接口!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 22:46:46

ExifToolGUI完全指南:从入门到精通元数据管理

ExifToolGUI完全指南&#xff1a;从入门到精通元数据管理 【免费下载链接】ExifToolGui A GUI for ExifTool 项目地址: https://gitcode.com/gh_mirrors/ex/ExifToolGui 想要轻松管理照片和视频的元数据信息吗&#xff1f;ExifToolGUI正是你需要的工具&#xff01;这款强…

作者头像 李华
网站建设 2026/7/14 23:05:49

ComfyUI-Easy-Use节点连接线残留问题的完整解决方案

ComfyUI-Easy-Use节点连接线残留问题的完整解决方案 【免费下载链接】ComfyUI-Easy-Use In order to make it easier to use the ComfyUI, I have made some optimizations and integrations to some commonly used nodes. 项目地址: https://gitcode.com/gh_mirrors/co/Comf…

作者头像 李华
网站建设 2026/7/14 23:05:02

Android Studio中文界面终极配置指南:快速实现母语开发环境

Android Studio中文界面终极配置指南&#xff1a;快速实现母语开发环境 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为And…

作者头像 李华
网站建设 2026/7/14 23:00:55

Windows 12网页版终极体验指南:免费打造你的云端操作系统

Windows 12网页版终极体验指南&#xff1a;免费打造你的云端操作系统 【免费下载链接】win12 Windows 12 网页版&#xff0c;在线体验 点击下面的链接在线体验 项目地址: https://gitcode.com/gh_mirrors/wi/win12 想要在浏览器中零成本体验下一代Windows操作系统吗&…

作者头像 李华
网站建设 2026/7/14 23:05:35

Free-NTFS-for-Mac:突破苹果系统NTFS读写限制的专业解决方案

Free-NTFS-for-Mac&#xff1a;突破苹果系统NTFS读写限制的专业解决方案 【免费下载链接】Free-NTFS-for-Mac Nigate&#xff0c;一款支持苹果芯片的Free NTFS for Mac小工具软件。NTFS R/W for macOS. Support Intel/Apple Silicon now. 项目地址: https://gitcode.com/gh_m…

作者头像 李华
网站建设 2026/7/14 23:03:33

电视盒子改造终极指南:200+设备Armbian系统完整支持清单

电视盒子改造终极指南&#xff1a;200设备Armbian系统完整支持清单 【免费下载链接】amlogic-s9xxx-armbian amlogic-s9xxx-armbian: 该项目提供了为Amlogic、Rockchip和Allwinner盒子构建的Armbian系统镜像&#xff0c;支持多种设备&#xff0c;允许用户将安卓TV系统更换为功能…

作者头像 李华