一、新建普通maven项目

1、首先,新建3个普通maven商城项目,模拟以往常见的Java单体应用开发,mall-interface是存放接口和公共代码部分,order-service-consumer和user-service-provider的pom依赖于mall-interface。

2、在order-service-consumer和user-service-provider中分别实现接口,编写各自的实现类

以往,如果order-service-consumer和user-service-provider有相互调用,一般需要当作一个模块引用,部署到服务器的时候需要部署全部模块,分布部署多个服务器的话就很麻烦,并且大的项目模块多的放在一起不方便开发和管理。

那么,把项目中各个模块分开部署那不就好了?但是如果直接把order-service-consumer 和user-service-provider分开部署不同服务器上,显然他们不能相互调用业务接口。这时Dubbo作为RPC框架,它的用处显现出来了。简单的说,Dubbo可以远程调用部署在不同服务器上的业务接口。

通过Dubbo改造,即使order-service-consumer 和user-service-provider部署不同机器,两个模块可以像调用本地接口一样调用远程服务。

二、通过Dubbo改造普通项目

1、改造user-service-provider项目,通过Dubbo发布服务

1.1 在pom.xml中引入Duoob依赖

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.xg.xmall.dubbo</groupId><artifactId>user-service-consumer</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>com.xg.xmall</groupId><artifactId>mall-interface</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!-- 引入dubbo --><!-- https://mvnrepository.com/artifact/com.alibaba/dubbo --><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.6.5</version></dependency><!-- 注册中心使用的是zookeeper,引入操作zookeeper的客户端端 --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>2.12.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build>
</project>

2.2 在资源文件夹新建Dubbo配置文件 provider.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 1、指定当前服务/应用的名字(同样的服务名字相同,不要和别的服务同名) --><dubbo:application name="user-service-provider"></dubbo:application><!-- 2、指定注册中心的位置 --><!-- <dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry> --><dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"></dubbo:registry><!-- 3、指定通信规则(通信协议?通信端口) --><dubbo:protocol name="dubbo" port="20882"></dubbo:protocol><!-- 4、暴露服务 ref:指向服务的真正的实现对象 --><dubbo:serviceinterface="com.xg.xmall.dubbo.service.UserService"ref="userServiceImpl" timeout="1000" version="1.0.0"><dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method></dubbo:service><!-- 服务的实现 --><bean id="userServiceImpl"class="com.xg.xmall.dubbo.service.impl.UserServiceImpl"></bean></beans>

2.3 编写Dubbo服务启动类 MainProviderApplication,启动服务发布注册服务

发布服务之前需要启动 Zookeeper

从Dubbo 服务监控中可以看见服务发布成功

2、改造order-service-consumer项目,通过Dubbo访问服务

1.1 同样在项目下的pom.xml中引入Duoob依赖

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.xg.xmall.dubbo</groupId><artifactId>user-service-consumer</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>com.xg.xmall</groupId><artifactId>mall-interface</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!-- 引入dubbo --><!-- https://mvnrepository.com/artifact/com.alibaba/dubbo --><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.6.5</version></dependency><!-- 注册中心使用的是zookeeper,引入操作zookeeper的客户端端 --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>2.12.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build>
</project>

2.2 在资源文件夹新建Dubbo配置文件 consumer.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsdhttp://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 扫描组件 --><context:component-scanbase-package="com.xg.xmall.dubbo.service.impl"></context:component-scan><dubbo:application name="order-service-consumer"></dubbo:application><dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry><!--声明需要调用的远程服务的接口,生成远程服务代理 --><dubbo:referenceinterface="com.xg.xmall.dubbo.service.UserService" id="userService"timeout="5000" retries="3" version="*"></dubbo:reference><dubbo:monitor protocol="registry"></dubbo:monitor></beans>

2.3 编写Dubbo服务启动类 MainConsumerApplication,启动获取服务

order-service-consumer并没有存放用户信息实现类,只是注入服务的接口,就可以获取其他项目提供的用户信息。可见,通过Dubbo调用远程服务成功

转载于:https://www.cnblogs.com/tocode/p/10451512.html

Dubbo 改造普通单体项目相关推荐

  1. Spring Cloud Alibaba 升级改造:老项目升级到微服务的重构策略

    本文咱们介绍六条改造策略: 严禁 Big Bang(一步到位): 尽早体现价值: 优先分离做前后端: 新功能构建成微服务: 利用 Spring AOP 开发低侵入的胶水代码: 基于 MQ 构建反腐层. ...

  2. 【maven】改造已有项目

    前言 maven 3.5.0 eclipse 4.7.1 windows 7 wps 10.1( excel可以) 有一个java ee的web项目,需要改造成maven项目 操作 准备 打开项目所在 ...

  3. spring boot controller 初始化_基于 tyboot 快速初始化 springboot 单体项目

    基于 tyboot 快速初始化 springboot 单体项目 tyboot源码: gitee https://gitee.com/magintursh/tyboot github https://g ...

  4. 若依单体项目定时任务模块使用教程

    本章教程,主要介绍一下若依开源项目单体项目中的定时任务模块的使用方法. 目录 一.系统默认提供的定时任务案例 二.自定义定

  5. 学习【瑞吉外卖①】SpringBoot单体项目

    视频链接:黑马程序员[Java 项目实战<瑞吉外卖>,轻松掌握 SpringBoot + MybatisPlus 开发核心技术] 资料链接:2022 最新版 Java学习 路线图>第 ...

  6. 改造ie老项目爬坑之showModalDialog

    改造ie老项目爬坑之showModalDialog 业务场景 公司的老项目都是使用的window.showModalDialog()这种方式实现的打开窗口,并且项目里的提示语均使用的alert和con ...

  7. Vue现有项目改造为Nuxt项目

    公司项目,最初只为了实现前后端分离式开发,直接选择了vue框架进行开发,然而现在项目基本完成了,发现蜘蛛根本就抓取不到网站数据,搜索引擎搜出来,都是一片空白没有数据,需要对项目做SEO优化. 本人第一 ...

  8. 将springboot单体项目部署到腾讯云服务器上

    前言 在服务器上运行springboot项目,需要有jdk环境,而此文的项目案例使用的数据库是mysql,所以也需要安装mysql,教程如下: CentOS7安装jdk8 CentOS7快速安装mys ...

  9. 学习【瑞吉外卖⑥】SpringBoot单体项目_手机验证码登录业务开发

    视频:[黑马程序员]Java 项目实战<瑞吉外卖>,轻松掌握 SpringBoot + MybatisPlus 开发核心技术 资料:2022 最新版 Java学习 路线图>第 5 阶 ...

最新文章

  1. 【转载】网络视频企业探索盈利模式 PPS研发新展示系统
  2. wcf ria中主从表绑定treeview
  3. 网站页面HTML代码优化需要注意的问题
  4. Juniper Firewall多进单出配制实例
  5. 操作系统——内存管理——分段和分页
  6. google protobuf 实体类和java对象互转_ProtoBuf为什么被吹出天际
  7. ubuntu16安装pymesh2的方法
  8. 2016-02-16
  9. ngrinder安装
  10. strcmp java_(一)strcmp函数
  11. Mysql8.0修改数据库密码
  12. 毕业论文用到的在线网站
  13. Unit firewalld.service could not be found
  14. linux 修改网卡 mac地址命令,Centos系统下查看和修改网卡Mac地址(附ifconfig命令格式)...
  15. 纳斯达克对经济泡沫的定义是:当交易价格远大于内在价值的时候,就称为泡沫(转)...
  16. 计算机三级网络技术最全知识点总结三
  17. 如何在Ubuntu 20.04上安装和使用TimescaleDB
  18. 空气源热泵控制系统解决方案
  19. 轻松解决桌面或者开始菜单里的图标显示异常
  20. nodejs爬取网页乱码解决方法

热门文章

  1. 第一家公立大学支持比特币支付学费
  2. AndroidStudio 解决Android方法数超过65535的问题
  3. [Asp.net mvc]OutputCacheAttribute
  4. opencv-车牌区域提取
  5. 学习Windows2008——设计活动目录
  6. 一个很好的 emacs 配置文件范例
  7. 企业 SpringBoot 教程 (七)springboot开启声明式事务
  8. [python] 3 、基于串口通信的嵌入式设备上位机自动测试程序框架(简陋框架)...
  9. 数据库启动时报ORA-00845错误解决方法
  10. 【转】css行高line-height的一些深入理解及应用