阿里官方提供的dubbo-spring-boot-starter 1.0.1 整合的dubbo 2.6.0和spring boot 1.5.9 案例

简介
1、根据阿里官方提供的dubbo-spring-boot-starter 1.0.1 整合的dubbo 2.6.0和spring boot 1.5.9。
2、项目有四个工程,提供者provider、消费者 consumer、服务接口 api 、测试项目test。
3、consumer项目是web项目,其他的为jar项目。
4、注意修改application.yaml(application.properties) 配置文件中的zookeeper地址和端口号。
5、测试项目主要是一直发送请求,测试当服务的提供者,消费者和注册中心挂掉后请求是否能够丢失。

操作步骤:
1、创建maven parent工程统一管理项目所有的jar的版本,parent的父项目设置为spring boot
勾选‘Create a simplate project’ ,创建简单项目
设置组名,项目名,包类型为pom
在dubbo-parent项目的pom.xml文件中添加spring-boot依赖使项目变成spring-boot项目。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>

添加项目的公共依赖jar包:
<!--dubbo-springBoot依赖-->
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>1.0.1</version>
</dependency>
<!--zookeeper依赖-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.11</version>
</dependency>
     <dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>

添加打包配置: 红色部分配置自己的javac地址或者在maven的settings.xml中配置javapath
<build>
<finalName>dubbo-parent</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<verbose>true</verbose>
<fork>true</fork>
<executable> D://Program Files/Java/jdk1.8.0_25/bin/javac</executable>
</configuration>
</plugin>
</plugins>
</build>

2、创建模块项目 dubbo-api,此项目是服务的接口项目,需要打成jar包供服务端和消费端调用。
创建 Maven Model 项目
选择默认的简单项目
模块项目的目录
编写服务暴露接口:
在 bean 包中添加公共实体类。
通过maven打包,放到本地仓库中,用于服务端和消费端调用。

3、创建dubbo-provide 服务端项目,可创建jar项目或者web项目,这里创建jar项目。
创建项目同dubbo-api项目相同。
修改pom.xml文件,添加dubbo-api的依赖
<dependency>
<groupId>cn.xuhao</groupId>
<artifactId>dubbo-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
在spring-boot的启动类:Application.class 中添加注解(@EnableCaching和@EnableDubboConfiguration)和挂起服务(不挂起执行完就结束了):
如果创建的是web项目就不用修改代码,只添加注解就好了。
实现dubbo-api项目中的接口:
编写项目中的application.yaml(application.properties)配置文件,配置dubbo服务

4、创建dubbo-consumer服务的消费端。项目创建为web类型的项目。
项目pom.xml文件中添加web和接口依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--服务接口 -->
<dependency>
<groupId>cn.xuhao</groupId>
<artifactId>dubbo-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>

项目的目录结构为:
在项目启动的Application.class文件中添加@EnableDubboConfiguration注解
编写Controller,在远程接口上添加@Reference注解使用dubbo服务端服务
修改application.properties配置文件,配置tomcat端口和dubbo服务

现在依次启动dubbo-provide,dubbo-consumer项目,就会在dubbo管控中心看到对应的提供者和消费者



5、创建测试项目dubbo-test
项目的创建方式同dubbo-api项目,创建简单的jar项目,通过jsoup调用服务消费者。
项目目录:
编写简单的测试类Main:
public class Main{
public static void main(String[] args){
long sumtime = 0;
int count = 10000;
//循环调用,请求id连续,判断请求是否丢失
for(int i= 0;i< count;i++) {
try {
long start = System.currentTimeMillis();
//jsoup 调用消费者地址
Document doc = Jsoup.connect("http://localhost:8088/hello/请求"+i).get();
Elements elements = doc.select("body"); //获取body中的内容
long end = System.currentTimeMillis();
long time = end-start; //记录调用时间
sumtime += time;
String result = "执行时间" + time + "\t\t"+elements.text();
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
}
}
//计算平均调用时间
float avgTime = sumtime/count;
System.out.println("平均执行时间:" + avgTime +"毫秒");
}
}
测试执行结果:
1、三个服务提供者,测试1w次请求:
测试请求1w次,平均执行时间3ms
2、测试多个服务端,其中一个服务端挂掉,请求与调用是否会丢失?
一个服务端挂掉后,消费者的rpc调用失败,dubbo进行重连,请求会被别的服务端执行不会丢失。
我关闭 服务提供方1,第2346次请求调用服务提供方1失败,重连后调用的服务提供方0.


3、服务端全部挂掉后服务怎么办。
服务消费端报错,服务调用失败。
 
 
 
4、服务服务注册中心挂掉。
消费端能够缓存注册中心注册的服务端,注册中心挂掉后,消费端能够根据缓存调用服务端,当有服务端挂掉也会根据缓存的服务端进行失败重连,直到所有服务端挂掉才会调用失败,dubbo管控台不会感知挂掉的服务。
我关掉服务提供端0,dubbo只调用的提供端1,没有服务丢失。
 
 
 


github源码地址: https://github.com/xuejian0616/dubbo-spring-boot-starter-demo


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值