❝ 根据左老师的 秒懂Dubbo框架(原理篇)今天写一个简单Jmeter测试 Dubbo 脚本; 内容目录: 1、idea 环境项目部署 2、nacos 环境部署 3、dubbo插件部署 4、不带参数请求 5、带参参数请求 ❞
Apache Dubbo 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
一、idea 环境项目部署
1、工程整个目录结果
- api接口与实体类
- provider数据提供者
- consumer消费者
2、api关键接口代码
「SserInfoService:」
代码语言:javascript复制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:」
代码语言:javascript复制
配置文件「application.yml:」
代码语言:javascript复制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 数据结构:」
代码语言:javascript复制
「application.yml:」
代码语言:javascript复制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
启动:
代码语言:javascript复制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}libext路径下,重启即可。
4、重启 Jmeter查看插件
添加成功如:
四、测试dubbo接口
有上面的环境,并且Jmeter中也有dubbo插件,那么剩下的就是通过插件完成今天的接口开发,接下来看下需要测试的接口有哪些,这些只模拟无参接口与有参数接口。
下面是这次做测试dubbo接口
代码语言:javascript复制
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