Spring Boot 结合 Dubbo 框架使用

82 阅读3分钟

Spring Boot框架是现在开发最主流的一个框架,结合Dubbo框架,能够更高效开发出分布式系统。在结合过程中,又该如何开发呢?

首先是步骤:

分布式开发主要分为三部分,分别为接口提供者、服务提供者、服务消费者。

接口提供者:
    一、创建一个普通maven工程
    二、写实体类
    三、写接口
    
服务提供者:
    一、创建springboot项目(不需要起步依赖)
    二、添加依赖
        添加接口层项目依赖、添加dubbo依赖、添加zookeeper依赖
        依赖如下:
        <!--添加接口依赖-->
        <dependency>
            <groupId>com.yuqn</groupId>
            <artifactId>springBootDubbo_01</artifactId>
            <version>1.0</version>
        </dependency>
        <!--添加dubbo依赖-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.8</version>
        </dependency>
        <!--添加zookeeper依赖-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <version>2.7.8</version>
            <type>pom</type>
            <!--排除日志重复加载依赖-->
            <exclusions>
                 <exclusion>
                      <artifactId>slf4j-log4j12</artifactId>
                      <groupId>org.slf4j</groupId>
                 </exclusion>
            </exclusions>
        </dependency>
    三、写业务层接口实现类
    四、添加注解
        在接口实现类上添加注解@Component、@DubboService(interfaceClass = StudentServer.class,version = "1.0",timeout = 5000)
        @Component:存放到容器中,可省略
        @DubboService:注解设置暴露接口设置
            interfaceClass:表示暴露接口
            version:版本号
            timeout:请求时间
    五、配置文件
        #配置服务名称
        spring.application.name=studentserver-provider
        #配置扫描的包,扫描的@dubboservice
        dubbo.scan.base-packages=com.yuqn.service
        #配置dubbo协议,如果使用zookeeper可以不用
        #dubbo.protocol.name=dubbo
        #dubbo.protocol.port=20881
        #设置注册中心
        dubbo.registry.address=zookeeper://localhost:2181
    六、启动类添加注解
        在启动类上面添加注解@EnableDubbo,启动dubbo

服务消费者:
    一、创建项目
        起步依赖选择web
    二、添加依赖
        依赖同服务提供者一样
    三、写controller类
        注:@DubboReference(interfaceClass = StudentServer.class,version = "1.0")
            private StudentServer studentServer;
        @DubboReference使用注解获取远程接口
    四、启动类添加注解
        在启动类上面添加注解@EnableDubbo,启动dubbo
    五、写配置文件
        #指定服务名称
        spring.application.name=consumer-application
        #指定注册中心
        dubbo.registry.address=zookeeper://localhost:2181
        
注:如果使用注册中心,需要下载对应的软件,这里使用的是zookeeper。

上面的步骤清楚之后,代码就简单多了。

接口提供者:

一、创建一个maven项目

image.png

二、写实体类

根据个人需求决定,实际开发中则根据业务需求创建,我这里用到的字段为id,name,sex三个字段,并且添加构造方法。

三、创建一个接口方法

image.png

服务提供者:

一、创建项目

创建一个springboot项目,可以不需要选择起步依赖

二、添加依赖

<!--添加接口依赖-->
        <dependency>
            <groupId>com.yuqn</groupId>
            <artifactId>springBootDubbo_01</artifactId>
            <version>1.0</version>
        </dependency>
<!--添加dubbo依赖-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.8</version>
        </dependency>
<!--添加zookeeper依赖-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <version>2.7.8</version>
            <type>pom</type>
            <!--排除日志重复加载依赖-->
            <exclusions>
                 <exclusion>
                      <artifactId>slf4j-log4j12</artifactId>
                      <groupId>org.slf4j</groupId>
                 </exclusion>
            </exclusions>
        </dependency>

三、写业务层接口实现类

根据自己需求,写实现类。

image.png 四、添加注解

在步骤三中,可以看到类上面有两个注解,分别是 @Component@DubboService

@Component:存放到容器中,可省略
@DubboService:注解设置暴露接口设置
    interfaceClass:表示暴露接口
    version:版本号
    timeout:请求时间

五、配置文件

接下来是配置文件,在springboot中,能有多种配置文件类型,如.yml、.properties等,这里用的是.properties。
在配置文件中添加配置:
注:如果使用zookeeper,需要下载zookeeper,zookeeper官网: https://zookeeper.apache.org/releases.html

image.png

六、启动类添加注解

使用dubbo,需要在启动类中添加 @EnableDubbo 注解,来启动Dubbo服务

image.png

服务消费者:

一、创建项目

这里起步依赖选择web

二、添加依赖

依赖同服务提供者一样

三、写controller类

注:@DubboReference(interfaceClass = StudentServer.class,version = "1.0")
    private StudentServer studentServer;
@DubboReference使用注解获取远程接口

image.png

四、启动类添加注解

使用dubbo,需要在启动类中添加 @EnableDubbo 注解,来启动Dubbo服务

image.png

五、写配置文件

image.png

接下来进行测试:

一、启动zookeeper

image.png

二、启动服务提供者

image.png

三、启动服务消费者

image.png

四、测试结果

image.png

以上就是springboot结合dubbo开发的一个过程。

分布式在中大型系统中使用非常普遍,它能够减低维护难度;但使用分布式开发,成本开销会更大。
源码:https://github.com/Yuqn/springboot_dubbo.git

以上内容可能存在不足或错误,如有发现请指出来。