内容目录:

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. 40 图 |我用 Mac M1 玩转 Spring Cloud

    我的开源 Spring Cloud 项目 PassJava 一直可以在 Windows 上正常运行,最近不是换 Mac M1 了么,想把这个项目在 M1 上跑起来,毕竟我的那台 Windows 用起来 ...

  2. DevEco Device Tool 2.1 Beta1在Hi3861开发板上可视化分析的体验

    DevEco Device Tool迎来了2.1 Beta1,新版本有很多亮点.在上次"DevEco Device Tool 2.1 Beta1 的Hi3861在Windows平台的编译体验 ...

  3. 网络编程-UDP的服务器和客户端----keep on going never give up

    1 //**************************************服务器********************************************** 2 #inclu ...

  4. 基于Centos7.4搭建prometheus+grafana+altertManger监控Spring Boot微服务(docker版)

    目的:给我们项目的微服务应用都加上监控告警.在这之前你需要将 Spring Boot Actuator引入 本章主要介绍 如何集成监控告警系统Prometheus 和图形化界面Grafana 如何自定 ...

  5. 9.13-15 runlevel & init & service

    runlevel:输出当前运行级别 runlevel命令用于输出当前Linux系统的运行级别. -quiet 不输出结果,用于通过返回值判断的场合 [root@cs6 ~]# runlevel N 3 ...

  6. C语言volatile

    原文地址: http://www.cnblogs.com/yc_sunniwell/archive/2010/06/24/1764231.html volatile提醒编译器它后面所定义的变量随时都有 ...

  7. Python数模笔记-StatsModels 统计回归(1)简介

    1.关于 StatsModels statsmodels(http://www.statsmodels.org)是一个Python库,用于拟合多种统计模型,执行统计测试以及数据探索和可视化. 2.文档 ...

  8. Stopper的使用

    工具类,抽象死循环逻辑的 import java.util.concurrent.atomic.AtomicBoolean; /** * if the process closes, a signal ...

  9. Linux下Flash-LED的处理

    Linux下Flash-LED的处理 一些LED设备提供两种模式-torch和flash.在LED子系统中,LED类(参见Linux下的LED处理)和LED Flash类,分别支持这些模式.torch ...

  10. TensorRT 数据格式说明

    TensorRT数据格式说明 NVIDIA  TensorRT支持不同的数据格式.需要考虑两个方面:数据类型和布局. 数据类型格式 数据类型是每个单独值的表示.它的大小决定了数值的范围和表示的精度:分 ...