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.mzph.cn/news/1142865.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity Mod Manager:游戏模组一键安装的终极解决方案

Unity Mod Manager&#xff1a;游戏模组一键安装的终极解决方案 【免费下载链接】unity-mod-manager UnityModManager 项目地址: https://gitcode.com/gh_mirrors/un/unity-mod-manager Unity Mod Manager是一款专为Unity引擎游戏设计的模组管理工具&#xff0c;能够帮助…

知识星球导出终极指南:一键批量下载与PDF制作完整教程

知识星球导出终极指南&#xff1a;一键批量下载与PDF制作完整教程 【免费下载链接】zsxq-spider 爬取知识星球内容&#xff0c;并制作 PDF 电子书。 项目地址: https://gitcode.com/gh_mirrors/zs/zsxq-spider 还在为知识星球上的精彩内容无法保存而烦恼吗&#xff1f;想…

如何在Linux上实现WPS与Zotero的无缝集成?完整跨平台文献管理指南

如何在Linux上实现WPS与Zotero的无缝集成&#xff1f;完整跨平台文献管理指南 【免费下载链接】WPS-Zotero An add-on for WPS Writer to integrate with Zotero. 项目地址: https://gitcode.com/gh_mirrors/wp/WPS-Zotero 在学术写作和科研工作中&#xff0c;你是否遇到…

科哥PDF-Extract-Kit应用:政府公文结构化处理案例

科哥PDF-Extract-Kit应用&#xff1a;政府公文结构化处理案例 1. 引言&#xff1a;政府公文数字化的挑战与破局 1.1 政府公文处理的现实痛点 在政务信息化进程中&#xff0c;大量历史档案和日常办公文件仍以非结构化的PDF或扫描图像形式存在。这些文档通常包含复杂的版式设计…

51单片机数码管静态显示电路Proteus仿真新手教程

从零开始&#xff1a;用Proteus仿真点亮第一个数码管你有没有过这样的经历&#xff1f;刚学单片机&#xff0c;手头没有开发板&#xff0c;连最基本的“让LED闪烁”都无从下手。或者好不容易接好电路&#xff0c;结果数码管不亮、乱码、闪一下就灭……折腾半天也不知道是程序写…

YimMenu终极使用指南:GTA V现代化辅助工具完全解析

YimMenu终极使用指南&#xff1a;GTA V现代化辅助工具完全解析 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu…

如何快速掌握YimMenu DLL注入技术:新手必看的完整指南

如何快速掌握YimMenu DLL注入技术&#xff1a;新手必看的完整指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimM…

EdgeRemover终极指南:一键安全彻底卸载Edge浏览器

EdgeRemover终极指南&#xff1a;一键安全彻底卸载Edge浏览器 【免费下载链接】EdgeRemover PowerShell script to remove Microsoft Edge in a non-forceful manner. 项目地址: https://gitcode.com/gh_mirrors/ed/EdgeRemover 还在为Windows系统自带的Microsoft Edge浏…

暗黑3终极自动化:D3KeyHelper智能宏工具完整指南

暗黑3终极自动化&#xff1a;D3KeyHelper智能宏工具完整指南 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面&#xff0c;可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 还在为暗黑3中繁琐的技能循环而手忙脚乱…

CompressO视频压缩工具:5分钟快速上手终极指南

CompressO视频压缩工具&#xff1a;5分钟快速上手终极指南 【免费下载链接】compressO Convert any video into a tiny size. 项目地址: https://gitcode.com/gh_mirrors/co/compressO 在数字内容时代&#xff0c;视频文件体积过大常常困扰着用户。CompressO作为一款开源…

3个核心配置技巧:让YimMenu游戏辅助工具发挥最大威力

3个核心配置技巧&#xff1a;让YimMenu游戏辅助工具发挥最大威力 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMe…

SpringCloud 微服务框架

单体架构&#xff1a;将业务全部功能集中到一个项目中&#xff0c;打成一个war包存储,部署在一台服务器中&#xff0c;只有一个数据库 优点 &#xff1a;架构简单&#xff0c;部署成本低。适合小型项目 问题&#xff1a;高并发性能问题&#xff0c;开发时代码耦合问题&#x…

RISC单周期处理器设计:项目应用实例分享

从零构建一个RISC单周期处理器&#xff1a;我的FPGA实战手记最近在带学生做数字系统课程设计时&#xff0c;我又一次亲手复现了那个经典的“玩具”——RISC单周期处理器。虽然它看起来像个教学模型&#xff0c;远不如现代流水线CPU那样炫酷&#xff0c;但正是这个看似简单的结构…

B站视频下载完整攻略:一键保存高清内容的终极方案

B站视频下载完整攻略&#xff1a;一键保存高清内容的终极方案 【免费下载链接】bilibili-downloader B站视频下载&#xff0c;支持下载大会员清晰度4K&#xff0c;持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 还在为B站视频无法离线观…

如何轻松下载M3U8流媒体:N_m3u8DL-RE完整解决方案

如何轻松下载M3U8流媒体&#xff1a;N_m3u8DL-RE完整解决方案 【免费下载链接】N_m3u8DL-RE 跨平台、现代且功能强大的流媒体下载器&#xff0c;支持MPD/M3U8/ISM格式。支持英语、简体中文和繁体中文。 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE …

N_m3u8DL-RE流媒体下载器:新手快速上手指南

N_m3u8DL-RE流媒体下载器&#xff1a;新手快速上手指南 【免费下载链接】N_m3u8DL-RE 跨平台、现代且功能强大的流媒体下载器&#xff0c;支持MPD/M3U8/ISM格式。支持英语、简体中文和繁体中文。 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE 你是否…

Mac NTFS读写困境的破局之道:开源工具实战指南

Mac NTFS读写困境的破局之道&#xff1a;开源工具实战指南 【免费下载链接】Free-NTFS-for-Mac Nigate&#xff0c;一款支持苹果芯片的Free NTFS for Mac小工具软件。NTFS R/W for macOS. Support Intel/Apple Silicon now. 项目地址: https://gitcode.com/gh_mirrors/fr/Fre…

YimMenu DLL注入实战秘籍:高效提升GTA5游戏体验

YimMenu DLL注入实战秘籍&#xff1a;高效提升GTA5游戏体验 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …

YimMenu深度解析:7个关键步骤实现GTA5菜单完美注入

YimMenu深度解析&#xff1a;7个关键步骤实现GTA5菜单完美注入 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu…

TuneFree:终极免费音乐播放器完全指南

TuneFree&#xff1a;终极免费音乐播放器完全指南 【免费下载链接】TuneFree 一款基于Splayer进行二次开发的音乐播放器&#xff0c;可解析并播放网易云音乐中所有的付费资源。 项目地址: https://gitcode.com/gh_mirrors/tu/TuneFree 还在为音乐平台的会员付费而烦恼吗…