内容目录:

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. (2) arm 指令条件码

    条件码助记符 标志 含义 EQ Z=1 相等 NE Z=0 不相等 CS/HS C=1 无符号数大于或等于 CC/LO C=0 无符号数小于 MI N=1 负数 PL N=0 正数或0 VS V=1 ...

  2. [CTF]ROT5/13/18/47位移密码

    [CTF]ROT5/13/18/47位移密码 ---------------转换网站 https://www.qqxiuzi.cn/bianma/ROT5-13-18-47.php ROT5:只对数字 ...

  3. XCTF-ics-05

    ics-05 题目描述 其他破坏者会利用工控云管理系统设备维护中心的后门入侵系统 解题步骤 用dirsearch和御剑扫了一下,只有index.php,尝试了一边,也只有index.php,也就是设备 ...

  4. TCP的握手和挥手

    三次握手 三次握手具体过程是什么? 客户端发送一个数据包 将SYN置成1,表示希望建立连接 这个包中的序列号是X 服务器收到客户端发来的数据包 通过SYN得知这是一个建立连接的请求 于是发送一个响应包 ...

  5. 【apache】使用HttpClient,进行简单网页抓取

    1 package com.lw.httpclient.test; 2 import org.apache.http.client.methods.CloseableHttpResponse; 3 i ...

  6. XD to Flutter 2.0 现已发布!

    Flutter 是 Google 的开源 UI 工具包.利用它,只需一套代码库,就能开发出适合移动设备.桌面设备.嵌入式设备以及 web 等多个平台的精美应用.过去几年,对于想要打造多平台应用的开发者 ...

  7. Nmap浅析(2)——端口发现

    端口发现 ​ 每台网络设备最多有216(65536)个端口,端口的作用是实现"一机多用".操作系统分了65536个端口号,程序在发送的信息中加入端口号,操作系统在接收到信息后按照端 ...

  8. 一个入门级CTF的Reverse

    这道题是XCTF攻防世界上的一道新手入门题目! 年前刚接触逆向时IDA,OD了这些工具都不会用(负基础),当时做这些题的时候觉得挺难(主要是缺少练习,没思路无从下手).现在回头再来看这些题目感觉确实是 ...

  9. 『政善治』Postman工具 — 11、Postman中对Cookie的操作

    目录 1.关联接口说明 2.测试关联接口实现步骤 3.补充:Postman中将请求转换成代码 上一篇文章说明了Postman中关于Cookie的相关操作,还是以Cookie举例,来说明下一在Postm ...

  10. React中diff算法的理解

    React中diff算法的理解 diff算法用来计算出Virtual DOM中改变的部分,然后针对该部分进行DOM操作,而不用重新渲染整个页面,渲染整个DOM结构的过程中开销是很大的,需要浏览器对DO ...