目录

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,那就是强强联合。

随着技术不断进步,现在Dubbo可以整合到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: dubboport: 20881registry: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、启动测试

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

注意:

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

SpringCloud 整合 Dubbo相关推荐

  1. SpringCloud微服务:基于Nacos组件,整合Dubbo框架

    源码地址:GitHub·点这里 || GitEE·点这里 一.基础组件简介 1.Dubbo框架 Dubbo服务化治理的核心框架,之前几年在国内被广泛使用,后续由于微服务的架构的崛起,更多的公司转向微服 ...

  2. 7.Spring Cloud Alibaba教程:整合Dubbo实现RPC调用

    概述 Apache Dubbo 是一款高性能的.基于Java的开源RPC框架,它提供了以下特性: 基于接口的远程方法调用 智能负载均衡 服务自动注册和发现 高可扩展性 运行期流量调度 可视化的服务治理 ...

  3. spring整合dubbo实现简单分布式接口调用

    随着微服务,分布式的概念越来越火,越来越多的互联网公司开始尝试使用分布式进行项目开发,分布式开发的好处毋庸置疑,分工明确,团队协作高效,安全,解耦分离等,其中以springcloud为代表的新分布式微 ...

  4. SpringCloud集成Dubbo实现RPC调用

    SpringCloud轻松集成Dubbo实现RPC调用 很久之前在做微服务架构选型的时候就听说阿里的微服务RPC框架dubbo,当时与Spring Cloud以http协议调用的架构做对比.发现dub ...

  5. Springboot 最简单的整合Dubbo框架实战案例

    分布式框架,目前比较热门的是springcloud和dubbo,虽然本人也是用cloud比较多,但是避免不了,有的项目就是需要用dubbo. 那么现在就给大家整一篇,简单清晰的spirngboot从零 ...

  6. 微服务(SpringCloud、Dubbo、Seata、Sentinel、SpringGateway)

    什么是微服务 微服务的概念是由Martin Fowler(马丁·福勒)在2014年提出的 微服务是由以单一应用程序构成的小服务,自己拥有自己的行程与轻量化处理,服务依业务功能设计,以全自动的方式部署, ...

  7. spring boot、SpringCloud、Dubbo

    小伙伴们可以从第一篇看起 微服务 分布式 集群 负载均衡详述 spring boot springcloud dubbo概述 springcloud五大核心组件详述 目录 一.SpringCloud概 ...

  8. sentinel 整合dubbo限流

    sentinel 整合dubbo限流 相关依赖 <!-- 服务注册与发现 --><dependency><groupId>com.alibaba.cloud< ...

  9. Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! "看看星空,会觉得自己很渺小,可能我们在宇宙中从来就是一个偶然.所以,无论什么事情,仔 ...

最新文章

  1. MySQL和java连连看_用 JAVA 开发游戏连连看(之一)动手前的准备
  2. 总结——LR学习总结
  3. 02 | 服务治理:Nacos 如何实现微服务服务治理
  4. 编程学将成为必然趋势,青少年编程,从哪里开始?这里推荐Python
  5. HTML第八章ppt,html教程第八章(JavaSript核心语言对象).ppt
  6. 前端开发掌握nginx常用功能之serverlocation匹配规则
  7. SQL-10 获取所有非manager的员工emp_no
  8. “中文编程”会是解决中国程序员编程效率的秘密武器,成为中国软件工程的“银弹”么?...
  9. CodeForces 828E DNA Evolution(树状数组)题解
  10. 2019.1.18作业 继承
  11. form表单居中_HTML基本结构、命名及对表单专项练习解释
  12. JavaMail入门第五篇 解析邮件
  13. 如何将java项目部署到Linux服务器上
  14. Linux搭建Java部署环境
  15. 以核心素养为导向的计算机教学方式,“雨花学术论坛”再开讲:让核心素养在课堂“落地生根”...
  16. ACM中的数学问题合集
  17. Python编写数字转换成中文大写
  18. 《算法竞赛中的初等数论》(六)正文 0x60 原根(ACM / OI / MO)(二十万字符数论书)
  19. 有什么PDF阅读器?告诉你三个好用的PDF阅读软件
  20. excel切片器_Excel切片器,让图表动起来

热门文章

  1. B细胞介导的体液免疫
  2. 2022-4-7 基于单片机的篮球记分器(LCD1602)(公众号:风吹摇铃 奔赴星海)
  3. UIImageView视图内容按比例缩小并淅淅隐去
  4. 阿里妈妈称日均覆盖人数破7000万
  5. 简书CEO 林立:简书钻改,让付出有所得
  6. 【Unity主程手记(摘录)】第一章(二) - Dictory 底层源码剖析
  7. 技能二:数据库(MySQL)·【22江苏转本笔记】
  8. Android_仿爱奇艺Loading效果
  9. lotus version 0.3.0+git1bfa2311 安装 interopnet
  10. CSS3-文本样式、字体样式