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

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

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

1.provider

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

1.1 pom文件添加dubbo相关依赖



    com.alibaba
    dubbo
    2.5.7
    
        
            
            org.springframework
            spring
        
    




    org.javassist
    javassist
    3.18.0-GA




    com.101tec
    zkclient
    0.10

1.2.安装zookeeper注册中心

1.2.1下载包如图


1.2.2解压如图

spring boot 集成dubbo进行rpc接口调用_第1张图片

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

1.3.填写dubbo配置文件

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

xml version="1.0" encoding="UTF-8"?>

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:protocol name="dubbo" port="28080"/>
    
    <dubbo:service registry="dubbodemo" timeout="3000" interface="com.sogaa.system.service.user.service.IUserService" ref="userService"/>

其中牵扯的几个问题是

spring boot 集成dubbo进行rpc接口调用_第2张图片

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

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

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

spring boot 集成dubbo进行rpc接口调用_第3张图片

接下来启动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"?>

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">

    
    name="dubbodemo-consumer"/>
    
    id="dubbodemo" address="zookeeper://localhost:2181"/>
    
    name="dubbo" port="28080"/>
    
    registry="dubbodemo" id="userService" interface="com.sogaa.system.service.user.service.IUserService"  />

在springboot的程序入口添加importResource注解让spring boot启动加载dubbo配置信息

spring boot 集成dubbo进行rpc接口调用_第4张图片

在controller层编写测试接口

spring boot 集成dubbo进行rpc接口调用_第5张图片

使用postman进行接口测试

spring boot 集成dubbo进行rpc接口调用_第6张图片

这里可以看到,我的消费者项目是通过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

spring boot 集成dubbo进行rpc接口调用_第7张图片

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

spring boot 集成dubbo进行rpc接口调用_第8张图片

2.eclipse引用本xsd文件

window-Preference-XML Catalog

spring boot 集成dubbo进行rpc接口调用_第9张图片

添加映射

spring boot 集成dubbo进行rpc接口调用_第10张图片

你可能感兴趣的:(走向架构师之路)