(1)简介:

      根据springboot快速的web项目搭建方式,用zookeeper+dubbo快速搭建分布式框架。 

(2)开发环境

       zookeeper-3.4.13直接在官网下载,

       dubbo2.6.2直接maven配置  

(3) 具体的操作

    3.1 下载zookeeper后,zoo_sample.cfg复制一份改名为zoo.cfg,修改其中的dataDir路径,其相关数据可设置到对应路径

    可修改clientPort=2181为自己的端口,当前框架搭建中,未变

    3.2  进入zookeeper的bin中,启动zkServer.cmd启动该服务

    3.3  打开IDE创建父项目study-dubbo-parent,可删除其他,保留pom.xml即可,然后新建三个module:

          study-dubbo-api(对外RPC接口)     study-dubbo-provider(dubbo接口提供者)     study-dubbo-comsumer(dubbo接口消费者)

   项目结构如下:  

      

  3.4 进行项目文件配置 

     3.4.1   ========父项目 study-dubbo-parent中的pom.xml,引入新建的三个module=============,

<modules>
    <module>study-dubbo-consumer</module>
    <module>study-dubbo-provider</module>
    <module>study-dubbo-api</module>
</modules>

具体结果范例如下: 

 3.4.2  对外提供RPC接口API的module即mudulestudy-dubbo-api,可写一个接口类

    

注意其pom.xml配置

3.4.3 =============== dubbo提供者module即study-dubbo-provider ====================

pom.xml的maven配置: 

   <1>  引入study-dubbo-api:

<dependency>
    <groupId>com.study</groupId>
    <artifactId>study-dubbo-api</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

<2> 引入Spring Boot Dubbo 依赖(自带log4j日志)

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>velocity-spring-boot-starter</artifactId>
    <version>0.1.0</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.6.2</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.46</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo-registry-zookeeper</artifactId>
    <version>2.6.1</version>
    <exclusions>
        <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.apache.log4j</groupId>
            <artifactId>log4j</artifactId>
        </exclusion>
    </exclusions>
</dependency>

注意多余log的去掉,以免发生冲突

<3>  springboot常规的maven包,注意去掉自带的log
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>compile</scope>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!-- 配置文件处理器,绑定配置文件 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

<4>  当前的dubbo的提供者代码范例的处理

 

其中dubbo-provider.xml配置 

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <dubbo:application name="${dubbo.application.name}"/>
    <dubbo:registry address="${dubbo.registry.address}"/>
    <dubbo:annotation package="${dubbo.scan.package}"/>
</beans>

dubbo-provider.properties配置

## Dubbo 应用名称
dubbo.application.name=dubbo-provider
##Dubbo 注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
## Dubbo 服务类包目录(service所在包的地址,这个千万不要配置错误)
dubbo.scan.package=com.study.provider.service
#暴露服务方式
dubbo.protocol.name=dubbo-provider
#暴露服务端口
dubbo.protocol.port=20880

提供的RPC接口实现类(ProviderService

3.4.4 =============== dubbo消费者module即study-dubbo-comsumer ====================

     pom.xml的配置同study-dubbo-provider保持一致

   

    Configuration的配置也保持一致

  

controller的请求:

整个项目的搭建就完成了,可以下载一个dubbo-admin监测RPC接口服务的监测情况,在官网下载。

测试结果: 

   首先启动study-dubbo-provider,然后启动study-dubbo-comsumer,

   study-dubbo-provider中提供的服务,注入一些数据如下: 

  

 

study-dubbo-comsumer请求接口的数据: 

 最后结果就实现了RPC接口的互通

 

 

 

 

 

 

 

 

 

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐