DUBBO 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是阿里巴巴 SOA 服务化治理方案的核心框架
需要环境:Jdk1.8、Maven
开发工具:IDEA
辅助工具:Jmeter2.13
备注:需要下载 jmeter 相关插件,便于结果分析 [监视器:"jp@gc-Loadosophia.org.Uploader"]
通常对于 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() + "线程被调用了。");
}
1、数据结果图