我这里介绍一下dubbo的xml配置的整合

首先需要两个项目,一个作为服务提供者,一个作为服务消费者,先操作服务提供者的项目。

1.provider

在这个项目中需要做四件事:

1.1 pom文件添加dubbo相关依赖


<!-- https://mvnrepository.com/artifact/com.alibaba/dubbo --> <dependency>
<groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.7
</version> <exclusions> <exclusion> <!--
dubbo自己会依赖一个低版本的spring,与项目中的spring版本出现冲突--> <groupId>org.springframework
</groupId> <artifactId>spring</artifactId> </exclusion> </exclusions>
</dependency><!-- https://mvnrepository.com/artifact/org.javassist/javassist -->
<!-- dubbo规定了类加载器的接口,使用javassist用来实现类加载--><dependency> <groupId>org.javassist
</groupId> <artifactId>javassist</artifactId> <version>3.18.0-GA</version>
</dependency><!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
<!-- dubbo要将服务注册到zookeeper中就需要zookeeper客户端进行注册相关动作--><dependency> <groupId>
com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version>
</dependency>
1.2.安装zookeeper注册中心

1.2.1下载包如图




1.2.2解压如图




配置文件暂时可以不用修改,端口使用默认的2181,双击zkServer.cmd启动注册中心后,服务已经启动

1.3.填写dubbo配置文件

在resource目录下创建rpc目录,再创建dubbo-provider.xml文件


<?xml version="1.0" encoding="UTF-8"?> <!-- 添加 DUBBO SCHEMA --> <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.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 应用名 --> <dubbo
:applicationname="dubbodemo-provider"/> <!-- 连接到哪个本地注册中心 --> <dubbo:monitor
protocol="registry" address="localhost:8081"/> <dubbo:registry id="dubbodemo"
address="zookeeper://localhost:2181"/> <!-- 用dubbo协议在20880端口暴露服务 --> <dubbo
:protocolname="dubbo" port="28080"/> <!-- 声明需要暴露的服务接口 --> <dubbo:service
registry="dubbodemo" timeout="3000" interface
="com.sogaa.system.service.user.service.IUserService"ref="userService"/>
</beans>
其中牵扯的几个问题是




标红色的xsd文件在阿里服务器上并不存在,这个文件在dubbo的jar文件里面会找到,spring在xml检测的时候会优先使用

本地jar包中的xsd,但是为了避免启动配置文件报错,可以在idea中配置xml的catelog,配置方法我在结尾会做出说明!

1.4.在spring配置文件中引入该配置文件




接下来启动tomcat服务,如果依赖不出现问题,就可以正常启动了




2.consumer消费者的项目配置

消费者项目的配置需要做四件事:

2.1将消费者的暴露的接口打包添加依赖

我的做法是将我的项目的pom的package选项改为jar然后maven build,引入jar,引入方式比较简单,请自行解决,有问题私下交流!

2.2编写dubbo配置文件

在resources文件下创建rpc文件夹,在rpc文件夹下创建dubbo-consumer.xml


<?xml version="1.0" encoding="UTF-8"?> <!-- 添加 DUBBO SCHEMA --> <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.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 应用名 -->
<dubbo:applicationname="dubbodemo-consumer"/> <!-- 连接到哪个本地注册中心 -->
<dubbo:registryid="dubbodemo" address="zookeeper://localhost:2181"/> <!--
用dubbo协议在20880端口暴露服务 --> <dubbo:protocol name="dubbo" port="28080"/> <!--
声明需要暴露的服务接口 --> <dubbo:reference registry="dubbodemo" id="userService" interface
="com.sogaa.system.service.user.service.IUserService"/> </beans>
在springboot的程序入口添加importResource注解让spring boot启动加载dubbo配置信息




在controller层编写测试接口




使用postman进行接口测试





这里可以看到,我的消费者项目是通过zookeeper配置中心找到了dubbo暴露的服务的远程链接,这个过程了就像就行httpclient进行远程端接口的访问,但是区别是什么呢?这个问题再上一个层级就是说rpc和http有什么区别?

这里我知道的是:

(1). rpc是基于tcp/Ip协议的,而http是是在tcp/ip协议的上层进行封装,效果略差于直接使用tcp/ip

(2).rpc使用的是长链接,而http使用的是短链接,rpc不需要像http一样实现三次握手,节省了网络开销

(3).rpc重点可以实现服务的治理,对服务进行监控和配合ngix进行服务器压力平摊,对于大型流量大的系统就应该使用rpc框架

而http接口比较短小灵活,在小型项目中会有它的用处。

这里分享一下我看过的一篇博客:RPC服务和HTTP服务对比
<https://blog.csdn.net/wangyunpeng0319/article/details/78651998>




附注:

1.interjIdea引用本地xsd文件

file-settings-Schemas and DTDs




添加映射,文件选择你的本地文件,本地文件可以从dubbo的github项目上去取,也可以解压本地的jar包




2.eclipse引用本xsd文件

window-Preference-XML Catalog




添加映射



友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信