关于java:性能工具之JmeterDubbo脚本开发

53次阅读

共计 4234 个字符,预计需要花费 11 分钟才能阅读完成。

内容目录:

1、idea 环境我的项目部署

2、nacos 环境部署

3、dubbo 插件部署

4、不带参数申请

5、带参参数申请


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

一、idea 环境我的项目部署

1、工程整个目录后果

api 接口与实体类

provider 数据提供者

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/q…

启动:

liwen@ bin % sh startup.sh -m standalone

页面显示如下

其余配置(略):

我的项目启动后 nacos 显示如下

三、dubbo 插件部署
1、下载:https://gitee.com/liselotte/s…

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/d…

正文完
 0