内容目录:

1、idea 环境项目部署

2、nacos 环境部署

3、dubbo插件部署

4、不带参数请求

5、带参参数请求

Apache Dubbo  是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

一、idea 环境项目部署

1、工程整个目录结果

图片

  1. api接口与实体类

  2. provider数据提供者

  3. consumer消费者

2、api关键接口代码

「SserInfoService:」


package com.dunshan.api.service;
import com.dunshan.api.pojo.UserInfo;
import java.util.HashMap;
import java.util.List;
/**
* @author LiWen
* @version 1.0
* @Date: 2021-05-04 11:51
* @Description: rpc接口调用
*/
public interface UserInfoService {

List<UserInfo> queryList();
HashMap<String, Object> queryMap(String name);
}

3、provider关键代码

接口实现「UserInfoServiceImpl:」


package com.dunshan.provider.Impl;
import com.dunshan.api.pojo.UserInfo;
import com.dunshan.api.service.UserInfoService;
import org.apache.dubbo.config.annotation.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
/**
* @author LiWen
* @version 1.0
* @Date: 2021-05-04 12:03
* @Description: 提供者实现类
*/
@Service
public class UserInfoServiceImpl implements UserInfoService {
@Override
public List<UserInfo> queryList() {
// 初始化数据
UserInfo testDTO1 = new UserInfo();
testDTO1.setId(1);
testDTO1.setName("学生");
testDTO1.setNumber(100);
testDTO1.setCreateTime(new Date());
UserInfo testDTO2 = new UserInfo();
testDTO2.setId(2);
testDTO2.setName("7D-RESAR-性能测试");
testDTO2.setNumber(101);
testDTO2.setCreateTime(new Date());
// 组装数据
List<UserInfo> list = new ArrayList<>();
list.add(testDTO1);
list.add(testDTO2);
return list;
}

@Override
public HashMap<String, Object> queryMap(String name) {
HashMap<String, Object> map = new HashMap<>(2);
map.put(name, "7D-RESAR-初级工具班");
map.put("nacos", "注册中心,配置管理中心");
map.put("date", System.currentTimeMillis());
return map;
}
}
 

配置文件「application.yml:」

server:
port: 8861
dubbo:
# 配置服务信息
application:
name: dubbo-provider
# 禁用QOS同一台机器可能会有端口冲突现象
qos-enable: false
qos-accept-foreign-ip: false
# 配置注册中心
registry:
address: nacos://127.0.0.1:8848
# 设置协议-协议由提供方指定消费方被动接受
protocol:
name: dubbo
port: 20880
spring:
main:
# 解决Bean重复定义问题
allow-bean-definition-overriding: true
 

4、consumer关键代码

「Span 数据结构:」


package com.dunshan.consumer.controller;
import com.dunshan.api.pojo.ResultVO;
import com.dunshan.api.pojo.UserInfo;
import com.dunshan.api.service.UserInfoService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
/**
* @author LiWen
* @version 1.0
* @Date: 2021-05-04 11:54
* @Description: 消费测试接口
*/
@RestController
@RequestMapping("/api")
public class ConsumerController {

/**
* Dubbo远程调用注解
*/
@Reference
private UserInfoService userInfoService;
@RequestMapping(value = "/list", method = RequestMethod.GET)
public ResultVO getList() {
List<UserInfo> providerTestDTOList = userInfoService.queryList();
return new ResultVO.Builder<>().code(200).message("success").data(providerTestDTOList).build();
}

/**
* 查询查询
* @param name
* @return
*/
@GetMapping("/api/query")
public ResultVO query(String name) {
HashMap<String, Object> map = userInfoService.queryMap(name);
return new ResultVO.Builder<>().code(200).message("success").data(map).build();
}

}

「application.yml:」

server:
port: 8862
dubbo:
# 配置服务信息
application:
name: dubbo-consumer
# 禁用QOS同一台机器可能会有端口冲突现象
qos-enable: false
qos-accept-foreign-ip: false
# 配置注册中心
registry:
address: nacos://127.0.0.1:8848
# 设置超时时间
consumer:
timeout: 4000
spring:
main:
# 解决Bean重复定义问题
allow-bean-definition-overriding: true

5、验证结果

图片

二、nacos 环境部署

1、下载nacos

下载链接:https://nacos.io/zh-cn/docs/quick-start.html

启动:

liwen@ bin % sh startup.sh -m standalone

图片

页面显示如下

图片

其他配置(略):

项目启动后 nacos显示如下

图片

三、dubbo插件部署

1、下载: https://gitee.com/liselotte/spring-boot-dubbo-demo.git

2、idea中编译jar

图片

3、打成jar包放入${JMETER_HOME}\lib\ext路径下,重启即可。

图片

4、重启 Jmeter查看插件

图片

添加成功如:

图片

四、测试dubbo接口

    有上面的环境,并且Jmeter中也有dubbo插件,那么剩下的就是通过插件完成今天的接口开发,接下来看下需要测试的接口有哪些,这些只模拟无参接口与有参数接口。

下面是这次做测试dubbo接口

 
package com.dunshan.api.service;
import com.dunshan.api.pojo.UserInfo;
import java.util.HashMap;
import java.util.List;
/**
* @author LiWen
* @version 1.0
* @Date: 2021-05-04 11:51
* @Description: rpc接口调用
*/
public interface UserInfoService {

List<UserInfo> queryList();
HashMap<String, Object> queryMap(String name);
}

五、不带参数请求

添加 Dubbo Sample 请求,并且根据上面需要测试的接口,在 Get Provider LIst 中的 Interface 中输入接口名字,与方法名称点击获取即可把需要测试的全部方法名称用列表显示出来。

图片

添加结果查看树进行结果验证:

图片

六、带参参数请求

添加 Dubbo Sample 请求:

验证结果:

七、总结

要深刻相信一个原理就是 “做什么事情都不容易,任何事情都不能一触而就”  ,对于君子每一件事情都是好事情!

有上面认识后自己搭建环境学习也好,办理事情也好,都会慢慢按步骤一步一步去实现。

项目地址:https://gitee.com/perfmance/dunshan-pef.git

 

性能工具之Jmeter-Dubbo脚本开发的更多相关文章

  1. 性能工具之Jmeter压测Thrift RPC服务

    概述 Thrift是一个可互操作和可伸缩服务的框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, ...

  2. 性能工具之JMeter+InfluxDB+Grafana打造压测可视化实时监控

    一.安装配置InfluxDB InfluxDB是GO语言开发的一个开源分布式时序数据库,非常适合存储指标.事件.分析等数据.有人做过mysql和influxDB对比,存储1000万条数据mysql要7 ...

  3. 性能工具之Jmeter压测Hprose RPC服务

    概述 Hprose(High Performance Remote Object Service Engine),国人开发的一个远程方法调用的开源框架.它是一个先进的轻量级的跨语言跨平台面向对象的高性 ...

  4. 性能工具之JMeter+InfluxDB+Grafana打造压测可视化实时监控【转】

    概述 本文我们将介绍如何使用JMeter+InfluxDB+Grafana打造压测可视化实时监控. 引言 我们很多时候在使用JMeter做性能测试,我们很难及时察看压测过程中应用的性能状况,总是需要等 ...

  5. 4 jmeter badboy脚本开发技术详解

    badboy中的检查点 以www.sogou.com搜索为例演示,搜索badboy. 1.打开badboy工具,点击红色按钮开始录制,在地址栏目中输入地址:www.sogou.com,回车. 2.输入 ...

  6. 性能工具之JMeter+InfluxDB+Grafana打造压测可视化实时监控(centos7环境)

    前提条件,已经安装jmeter并可以运行 1.安装influxdata wget et https://dl.influxdata.com/influxdb/releases/influxdb-1.7 ...

  7. 性能工具之Jmeter小白入门系列之一

    一.简单了解 Apache JMeter The Apache JMeter application is open source software, a 100% pure Java applica ...

  8. 【JMeter4.0学习(二)】之搭建openLDAP在windows8.1上的安装配置以及JMeter对LDAP服务器的性能测试脚本开发

    目录: 概述 安装测试环境 安装过程 配置启动 配置搭建OpenLDAP 给数据库添加数据 测试查询刚刚插入的数据 客户端介绍 JMeter建立一个扩展LDAP服务器的性能测试脚本开发 附:LDAP学 ...

  9. 【JMeter4.0学习(五)】JMeter对服务器监控测试脚本开发

    目录: 下载相关JMeter插件 服务器监控测试脚本开发 附:参考相关文档 本文主要来说一下如何通过JMeter插件来监控服务器CPU.内存.磁盘.网络等相关资源. 一.首先,需要下载相关JMeter ...

  10. jmeter --自动化badboy脚本开发技术

    jmeter --自动化badboy脚本开发技术 一般人用badboy都是使用它的录制功能,其它badboy还是一款自动化的工具,它可以实现检查点.参数化.迭代.并发.报告.断点等功能.本文就这些功能 ...

随机推荐

  1. java中的NAN和INFINITY

    java浮点数运算中有两个特殊的情况:NAN.INFINITY. 1.INFINITY: 在浮点数运算时,有时我们会遇到除数为0的情况,那java是如何解决的呢? 我们知道,在整型运算中,除数是不能为 ...

  2. 解决GET http://localhost:8080/js/layui/layui.js net::ERR_ABORTED 404

    用ssm+layui在写页面的时候,发现无法找到资源路径 <script src="js/layui/layui.js" charset="utf-8"& ...

  3. IDEA 新建 Java 项目 (图文讲解, 良心教程)

    IDEA 新建 Java 项目 (图文讲解, 良心教程) 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章, 关注回复「资源」, 免费领取全网最热的Java架构师学习PDF, 转载 ...

  4. 【软工】个人项目作业——个人软件流程(PSP)

    [软工]个人项目作业--个人软件流程(PSP) 项目 内容 班级:北航2020春软件工程 006班(罗杰.任健 周五) 博客园班级博客 作业:设计程序求几何对象的交点集合 个人项目作业 个人课程目标 ...

  5. [刷题] PTA 7-32 说反话-加强版

    题目描述: 给定一个英语句子,各个单词之间用空格分隔.要求编写程序,将所有单词倒序输出 输入示例: Hello World Here I Come 输出示例: Come I Here World He ...

  6. linux基本命令随笔

    cd(change directory) 不跟参数,直接进入当前登录用户的家目录 . 代表当前目录 .. 代表上级目录 ls(list) -l 显示文件详细信息 -a 显示隐藏文件 -S 以文件大小排 ...

  7. megacli修复raid1硬盘

    megacli修复raid1硬盘 By HKL, Tuesday 27 August 2019, 评论 [ Hardware Operating ] 使用megaraid修复raid1掉线硬盘 使用说 ...

  8. Linux 如何查看系统负载

    Linux 如何查看系统负载 310 博客 /  Linux/ 4个月前/  534 /  0   操作系统的负载状态,反映了应用程序的资源使用情况,从中能找出应用程序优化的瓶颈所在. 系统平均负载, ...

  9. 8.10-11 mount、umount

    8.10 mount:挂载文件系统 mount命令可以将指定的文件系统挂载到指定目录(挂载点),在Linux系统下必须先挂载所有的设备,然后才能被访问,挂载其实就是为要访问的设置开个门(开门才能访问) ...

  10. 一个开源的MY BLOG

    my blog My Blog是由Docker+SpringBoot+Mybatis+thymeleaf等技术实现的Java博客系统,本来是一个docker和springboot的实战练习项目,目前已 ...