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项目
二、写实体类
根据个人需求决定,实际开发中则根据业务需求创建,我这里用到的字段为id,name,sex三个字段,并且添加构造方法。
三、创建一个接口方法
服务提供者:
一、创建项目
创建一个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>
三、写业务层接口实现类
根据自己需求,写实现类。
四、添加注解
在步骤三中,可以看到类上面有两个注解,分别是 @Component 和 @DubboService
@Component:存放到容器中,可省略
@DubboService:注解设置暴露接口设置
interfaceClass:表示暴露接口
version:版本号
timeout:请求时间
五、配置文件
接下来是配置文件,在springboot中,能有多种配置文件类型,如.yml、.properties等,这里用的是.properties。
在配置文件中添加配置:
注:如果使用zookeeper,需要下载zookeeper,zookeeper官网: https://zookeeper.apache.org/releases.html
六、启动类添加注解
使用dubbo,需要在启动类中添加 @EnableDubbo 注解,来启动Dubbo服务
服务消费者:
一、创建项目
这里起步依赖选择web
二、添加依赖
依赖同服务提供者一样
三、写controller类
注:@DubboReference(interfaceClass = StudentServer.class,version = "1.0")
private StudentServer studentServer;
@DubboReference使用注解获取远程接口
四、启动类添加注解
使用dubbo,需要在启动类中添加 @EnableDubbo 注解,来启动Dubbo服务
五、写配置文件
接下来进行测试:
一、启动zookeeper
二、启动服务提供者
三、启动服务消费者
四、测试结果
以上就是springboot结合dubbo开发的一个过程。
分布式在中大型系统中使用非常普遍,它能够减低维护难度;但使用分布式开发,成本开销会更大。
源码:https://github.com/Yuqn/springboot_dubbo.git
以上内容可能存在不足或错误,如有发现请指出来。