spring boot 集成dubbo进行rpc接口调用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HeadingAlong/article/details/80538620

我这里介绍一下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:application name="dubbodemo-provider"/>
    <!-- 连接到哪个本地注册中心 -->
    <dubbo:monitor protocol="registry" address="localhost:8081"/>
    <dubbo:registry id="dubbodemo" address="zookeeper://localhost:2181"/>
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="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:application name="dubbodemo-consumer"/>
    <!-- 连接到哪个本地注册中心 -->
    <dubbo:registry id="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服务对比


附注:

1.interjIdea引用本地xsd文件

file-settings-Schemas and DTDs


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


2.eclipse引用本xsd文件

window-Preference-XML Catalog


添加映射


猜你喜欢

转载自blog.csdn.net/HeadingAlong/article/details/80538620