当前位置: 首页 > news >正文

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、启动测试

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

注意:

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

http://www.jsqmd.com/news/228110/

相关文章:

  • 知识星球导出终极指南:一键批量下载与PDF制作完整教程
  • Unity Mod Manager:游戏模组一键安装的终极解决方案
  • 如何在Linux上实现WPS与Zotero的无缝集成?完整跨平台文献管理指南
  • 科哥PDF-Extract-Kit应用:政府公文结构化处理案例
  • YimMenu终极使用指南:GTA V现代化辅助工具完全解析
  • 51单片机数码管静态显示电路Proteus仿真新手教程
  • 如何快速掌握YimMenu DLL注入技术:新手必看的完整指南
  • EdgeRemover终极指南:一键安全彻底卸载Edge浏览器
  • 暗黑3终极自动化:D3KeyHelper智能宏工具完整指南
  • CompressO视频压缩工具:5分钟快速上手终极指南
  • 3个核心配置技巧:让YimMenu游戏辅助工具发挥最大威力
  • RISC单周期处理器设计:项目应用实例分享
  • SpringCloud 微服务框架
  • B站视频下载完整攻略:一键保存高清内容的终极方案
  • 如何轻松下载M3U8流媒体:N_m3u8DL-RE完整解决方案
  • Mac NTFS读写困境的破局之道:开源工具实战指南
  • N_m3u8DL-RE流媒体下载器:新手快速上手指南
  • YimMenu深度解析:7个关键步骤实现GTA5菜单完美注入
  • YimMenu DLL注入实战秘籍:高效提升GTA5游戏体验
  • TuneFree:终极免费音乐播放器完全指南
  • JiYuTrainer终极破解指南:3分钟掌握极域电子教室完全解锁
  • Godot卡牌游戏框架:5个关键模块解锁专业级开发体验
  • 如何快速迁移艾尔登法环存档:EldenRingSaveCopier完整指南
  • TuneFree音乐播放器:解锁付费音乐资源的5大核心优势
  • Python通达信数据获取:金融分析的智能化革命
  • 洛雪音乐桌面版:从新手到高手的进阶指南
  • springcloud springboot nacos版本对应
  • YimMenu完全掌握指南:从入门到精通的GTA5辅助工具使用教程
  • PDF-Extract-Kit教育场景应用:试卷题目自动识别教程
  • TuneFree 免费音乐播放器:解锁网易云音乐所有付费资源的终极指南