简介

   DUBBO 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是阿里巴巴 SOA 服务化治理方案的核心框架

1、 需要环境工具:

需要环境:Jdk1.8、Maven
开发工具:IDEA
辅助工具:Jmeter2.13
备注:需要下载 jmeter 相关插件,便于结果分析 [监视器:"jp@gc-Loadosophia.org.Uploader"]

2、 Dubbo 接口压力测试:

通常对于 dubbbo 的压测我们有 2 种选择,一种是直接通过编码工具进行线程压测;另一种就是借助压测工具来进行,下面对两种方法分别进行陈述
1、测试环境的搭建,构建 Maven 工程



2、配置 pom.xml,引入需要的服务 jra 包和需要测试的相关服务


net.javacrumbs.json-unit
json-unit
1.12.1

3、如果是使用 jmeter 进行压测,还需要引入 jmeter 相关服务 jar


org.apache.jmeter
ApacheJMeter_core
3.0


org.apache.jmeter
ApacheJMeter_components
3.0

4、配置 dubbo 消费端的文件[src/main/resources/Dubbo.xml]

<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
context:annotation-config/

<!-- <!— 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 —>-->


<!-- 生成远程服务代理,可以像使用本地 bean 一样使用 demoService -->

工具类编写

1、编译[IDEA]压测,引入 Executor 框架与线程池,Executor 执行 Runnable 任务的示例代码

public class ConcurrentTest {
@Test
public void test1()
{
ExecutorService executorService = Executors.newFixedThreadPool(10);
WalletService walletService = new WalletService();
BubboFacade dubboFacade = walletService.getDubboFacadeService();
ArrayList resultList = new ArrayList();
int run_Count =100;
for (int i =0;i<run_Count;i++)
{
Runnable worker = new WorkerThread(i,wumartFacade,resultList);
executorService.execute(worker);
}
executorService.shutdown();//关闭
}

2、Executor 执行 Runnable 任务

class TestRunnable implements Runnable{

public void run(){

System.out.println(Thread.currentThread().getName() + "线程被调用了。");

}

jmeter 辅助工具压测

1、数据结果图

内容实在太多了,具体代码近期开源吧!


↙↙↙阅读原文可查看相关链接,并与作者交流