Jeecgboot Feign、分布式压测、分布式任务调度
分布式压测
需求场景
一些关键接口需要压测到很高的QPS需要设置更多的线程去模拟虚拟用户去请求接口假如需要模拟2万个用户因为jemeter使用java语言开发每创建一个线程jvm默认会为每个线程分配1M的堆栈内存空间那么就需要20G内存一般压测机器是4核8G或8核16G因此需要更多台机器共同完成施压请求
分布式压测示意图
![](https://imgkr2.cn-bj.ufileos.com/a9de3bea-df91-4bd0-8458-d778770aa723.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=0XgPvVlUz0nGhyDk0g8fKUBJy3Q%253D&Expires=1608696155)
meter分布式测试环境中有两个角色:Master和Slaves
1、Master节点:向参与的Slaves节点发送测试脚本,并聚合Agent节点的执行结果,部署一台
2、Slaves节点:接收并执行Master节点发送过来的测试脚本,并将执行结果返回给Master,可部署多台
安装slave节点
docker pull runcare/jmeter-slave
docker run -it -d --name slave01 runcare/jmeter-slavedocker run -it -d --name slave02 runcare/jmeter-slavedocker run -it -d --name slave03 runcare/jmeter-slave
![](https://imgkr2.cn-bj.ufileos.com/1186898f-95cf-477b-871c-a098cf0ff05b.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=ca5DGZXDsLlR391GlGrMxmR4cJw%253D&Expires=1608705019)
准备测试脚本
test.jmx
![](https://imgkr2.cn-bj.ufileos.com/6f9926d3-713e-422d-8a04-a9c43c2cdc11.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=XkUuxNIh8DOhqAmQ5fLeYuQrQz8%253D&Expires=1608705082)
查看slave机器的IP
docker inspect -f '{{ .Name }} => {{ .NetworkSettings.IPAddress }}' $(docker ps -q)
![](https://imgkr2.cn-bj.ufileos.com/b9cf7b55-e373-4fa5-862c-fb558713143c.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=FzUR5S8FWG%252F4%252BaIQ%252F1XKW4roBys%253D&Expires=1608705143)
启动master docker并执行测试脚本
存放test.jmx脚本的目录
/Users/mengfanxiao/Documents/stream/jemeter/jmx/
命令
result=`date +"%Y%m%d%H%M%S"` && docker run --rm -v /Users/mengfanxiao/Documents/stream/jemeter/jmx/:/data runcare/jmeter-master jmeter -n -t /data/test.jmx -l /data/$result.jtl -j /data/$result.log -e -o /data/$result -R 172.17.0.6,172.17.0.7,172.17.0.8
或者
docker run --rm -v $(pwd):/data runcare/jmeter-master jmeter -n -t /data/test.jmx -l /data/result.jtl -j /data/result.log -R 172.17.0.6,172.17.0.7,172.17.0.8
![](https://imgkr2.cn-bj.ufileos.com/ed4dedeb-baee-447a-b23c-22b14c3835e6.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=czEcegGtSpOvPLQqQr2MTy7b74A%253D&Expires=1608705332)
结果文件
生产的结果文件,日志文件和报表文件在脚本文件test.jmx同一目录下
如果压测脚本中使用到了csv数据源文件,需要提前复制到Slaves的/data目录下
![](https://imgkr2.cn-bj.ufileos.com/5cd4d4c7-767a-4aaf-97a7-8ee21aa9fdc7.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=CkXI20%252FyN9i4qKuemUnP%252Bko3dfI%253D&Expires=1608705379)
注意事项
master和slaves需要在同一个网段
如果mac电脑Master使用安装在mac电脑中的JmeterSlaves使用Docker中的Slaves需要在启动Slaves时将端口映射出来
docker run -it -d -p 1099:1099 -p 60001:60001 runcare/jmeter-slave
执行Master发送脚本时也需要指定server.hostname和server.rmi.localport
进入test.jmx所在目录
result=`date +"%Y%m%d%H%M%S"` && jmeter -n -t test.jmx -l $result.jtl -j $result.log -e -o $result -Djava.rmi.server.hostname=30.208.47.45 -Dserver.rmi.localport=60002 -Dserver_port=1098
Dockerfile源码
https://gitee.com/pingfanrenbiji/resource/tree/master/%E5%88%86%E5%B8%83%E5%BC%8Fjemeter
Jeecgboot微服务Feign
示例
服务jeecg-cloud-system 调用 jeecg-cloud-demo
jeecg-cloud-demo 服务接口
接口
![](https://imgkr2.cn-bj.ufileos.com/664300a2-7bd8-4d0f-85a4-dba8886d0a2c.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=AMTQi5ZACMdIKhzYeSD4Erwq6Tw%253D&Expires=1608706797)
实现类
![](https://imgkr2.cn-bj.ufileos.com/f3d90d10-94d4-4770-8063-736405e48b54.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=NHq4VpWAMnoT2xLJZl4d%252BJvjFUo%253D&Expires=1608706826)
服务接口
![](https://imgkr2.cn-bj.ufileos.com/52d908fa-08fc-42cc-a94e-8fdb63e63c1f.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=4aE4WcppFJ9JZ6ieNAcy5%252BShSBQ%253D&Expires=1608706777)
jeecg-cloud-system编写feign客户端
方式一 feign客户端
启动类加上@EnableFeignClients
![](https://imgkr2.cn-bj.ufileos.com/e29faae3-ce5b-4649-a45c-74fdf05a2e13.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=IKtj2yz4FwIIvqGspgyQnygA9Fk%253D&Expires=1608707071)
编写feign客户端
![](https://imgkr2.cn-bj.ufileos.com/dacefa03-b6fb-4d50-abc6-784291f7c067.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=9xGpl6MUgN%252BJuqSx3wg0HArb9uo%253D&Expires=1608707130)
编写测试方法
![](https://imgkr2.cn-bj.ufileos.com/584013f9-09a8-4d03-a319-8338a6dfb5cc.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=wj7V2PVcgE2NYXr%252BwscOtB7X4TU%253D&Expires=1608707192)
方式二 动态feign客户端
启动类 @EnableFeignClients
同上
编写feign接口调用
同上
编写测试方法
![](https://imgkr2.cn-bj.ufileos.com/199d87df-8d4c-4a7b-a3dd-93608bbc4941.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=1SzYfbpvvUKwVTKEDJZ1GKbkXKM%253D&Expires=1608707428)
![](https://imgkr2.cn-bj.ufileos.com/22e5da61-db5b-4184-a839-7e56785099ae.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=pqvORlFIGpeltpOhRwGGN8qbxNQ%253D&Expires=1608707472)
参数一表示feign接口类参数二表示类名称
![](https://imgkr2.cn-bj.ufileos.com/73acf0b7-1d21-462e-ac8a-d001a062672f.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=N42c0z7ZgV253YcSpedyEcKaAAQ%253D&Expires=1608707900)
feign原理
架构图
![](https://imgkr2.cn-bj.ufileos.com/c4fa726e-8326-43c5-b87f-29e077e49f63.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=nUUxiwFYt%252FXdpbxO9MpYrCjPnBQ%253D&Expires=1608709421)
feign扫包和注册细节
![](https://imgkr2.cn-bj.ufileos.com/1da0cc29-8a2f-4791-935d-3d5aecbc4097.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=zyw8UVS9dMQPqmIj8sPkxco3il0%253D&Expires=1608709469)
FeignClientFactoryBean 解析
![](https://imgkr2.cn-bj.ufileos.com/f3ec433b-9685-4d0e-94ce-66a66817822c.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=20eHb0HsNd7EEUGQBk%252F%252F47udEms%253D&Expires=1608709478)
代理的实现过程
![](https://imgkr2.cn-bj.ufileos.com/9efac3f3-f23c-48b1-bee1-5e49ac48cd32.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=TMG7ce5pkldfra04BIJ4RhUyP3M%253D&Expires=1608709486)
代理invoke的实际执行过程
![](https://imgkr2.cn-bj.ufileos.com/970f7eff-49ae-4cc3-a602-af7c069b8ad3.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=yC8MpOpE3HMVOMNH5QfhcOwGuzc%253D&Expires=1608709493)
xxl-job定时任务集成
引入依赖
![](https://imgkr2.cn-bj.ufileos.com/89727864-10ac-4341-8b10-0d43b597bf0d.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=%252F9DGA%252FwFKOoyxAXLXI%252BObdZgt9E%253D&Expires=1608711382)
客户端demo编写
![](https://imgkr2.cn-bj.ufileos.com/4a283401-122d-45dc-b5da-c474b86e47a6.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=JAk9efMM4hJKFJcSAb0WlKXKdoA%253D&Expires=1608711440)
修改 jeecg-dev.yaml 配置文件
开启 xxljob 并 修改 xxljob-admin的服务连接配置
![](https://imgkr2.cn-bj.ufileos.com/22436e34-71b0-4ac3-a018-e92684aa2c93.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=b09iuCFvRBJ1iXbZdyy175LkFDg%253D&Expires=1608715331)
启动xxl-job服务
数据库脚本
https://gitee.com/pingfanrenbiji/jeecg-boot/blob/1e3a4d6a6f53589a3cd53fd18c62bf4375467447/jeecg-boot/jeecg-cloud-module/jeecg-cloud-xxljob/doc/db/tables_xxl_job.sql
配置邮箱通知
![](https://imgkr2.cn-bj.ufileos.com/c2ec43b6-e987-45a8-b463-34e601ac4d37.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=Kr72zBiQXq%252FEa33ap6r2aCyCbRM%253D&Expires=1608713044)
开启邮箱服务并生成授权码
![](https://imgkr2.cn-bj.ufileos.com/d88f8448-b78c-438c-865e-abdb61d88e9f.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=763U9RmwCkRubGfvqNnyXOpMVTQ%253D&Expires=1608713073)
![](https://imgkr2.cn-bj.ufileos.com/c677a165-51aa-4445-8cff-2cf94e98c86c.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=KAlERzwiKMm5ZvUdOflmgPqiNfU%253D&Expires=1608713111)
设置IMAP服务的SSL加密方式
https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=331
![](https://imgkr2.cn-bj.ufileos.com/be9c2dd0-66a6-4896-abd2-1abe9cd9a3c2.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=%252Bf%252FiagTzK%252BWWJx1XvlyYqP%252BMUkI%253D&Expires=1608713201)
启动服务
![](https://imgkr2.cn-bj.ufileos.com/32057d28-e88e-433a-868e-9de62717d3f5.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=Q6IBSHIqUrJ1KponvOiMY%252Boidhs%253D&Expires=1608712077)
界面访问
http://localhost:9080/xxl-job-adminadmin123456
![](https://imgkr2.cn-bj.ufileos.com/a94a5e85-a75c-42fe-98e9-e17a8a162a6a.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=%252FvX6hn6MOhs%252BhjoE1S7VP1OYdzk%253D&Expires=1608712118)
创建定时任务
新增执行器
![](https://imgkr2.cn-bj.ufileos.com/8f9b83eb-ee69-47b3-acd0-0de2e91549a5.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=KGEjbw4cEkYuuqP%252B2l56vk5ZuWM%253D&Expires=1608715271)
新增定时任务
![](https://imgkr2.cn-bj.ufileos.com/692a1cc6-9562-4ff6-9f88-fa968e6e9ca4.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=A4dGCaYTaVFHNMLKUF78J4IbRmk%253D&Expires=1608712420)
测试定时任务
![](https://imgkr2.cn-bj.ufileos.com/34ee34d5-9c63-4560-934f-da8bdf197614.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=lcT7yQ7P%252BSD2j0djRxJ1hyDXOw0%253D&Expires=1608712481)
查看执行日志
![](https://imgkr2.cn-bj.ufileos.com/a27408b7-416a-488e-b81a-aabf44d8f6e1.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=nKm5Wxz2TOfM4GbYt3X6uVzsqBA%253D&Expires=1608715384)
![](https://imgkr2.cn-bj.ufileos.com/b6a57acd-a6c0-4137-b595-d36481d6c629.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=eXxdHKQM2UF4Ui4u1tDvM2GNkEI%253D&Expires=1608715455)
Jeecgboot Feign、分布式压测、分布式任务调度相关推荐
- java模拟数据库压测_Jeecgboot Feign、分布式压测、分布式任务调度
分布式压测 需求场景 一些关键接口需要压测到很高的QPS 需要设置更多的线程去模拟虚拟用户去请求接口 假如需要模拟2万个用户 因为jemeter使用java语言开发 每创建一个线程 jvm默认会为每个 ...
- 接口测试学习——jmeter分布式压测
分布式压测我理解的就是有一台主控机和几台压力机.主控机通过远程控制压力机启动测试,来实现系统不同级别访问量情况下的性能验证.操作步骤如下: 1.启动jmeter自动化工具,界面显示如下图所示. 2.在 ...
- jmeter分布式压测原理简介1
1.什么叫分布式压测? 分布式压测:模拟多台机器向目标机器产生压力,模拟几万用户并发访问 2.分布式压测原理:如下 3.更多补充.....待添加 转载于:https://www.cnblogs.com ...
- 分布式压测系列之Jmeter4.0第一季
1)Jmeter4.0介绍 jmeter是个纯java编写的开源压测工具,apache旗下的开源软件,一开始是设计为web测试的软件,由于发展迅猛,现在可以压测许多协议比如:http.https.so ...
- 分布式压测系列之Jmeter4.0
1)Jmeter4.0介绍 jmeter是个纯java编写的开源压测工具,apache旗下的开源软件,一开始是设计为web测试的软件,由于发展迅猛,现在可以压测许多协议比如:http.https.so ...
- 性能测试搭建Jmeter分布式压测与监控
对于运维工程师来说,需要对自己维护的服务器性能瓶颈了如指掌,比如我当前的架构每秒并发是多少,我服务器最大能接受的并发是多少,是什么导致我的性能有问题:如果当前架构快达到性能瓶颈了,是横向扩容性能提升大 ...
- JMETER性能测试从入门到精通高级篇 - 分布式压测部署之负载机的设置(详解教程)
1.简介 千呼万唤始出来,这一篇感觉写了好久,总想写的清楚明白简洁,但是还是洋洋洒洒写了好多,希望大家喜欢吧!本来打算将这一篇文章是放在性能测试中讲解和分享的,但是有的童鞋或者小伙伴们私下问的太多了, ...
- 搭建 Apache Jmeter 分布式压测与监控
1.前言 对于运维工程师来说,需要对自己维护的服务器性能瓶颈了如指掌,比如我当前的架构每秒并发是多少,我服务器最大能接受的并发是多少,是什么导致我的性能有问题:如果当前架构快达到性能瓶颈了,是横向扩容 ...
- jmeter 高并发测试报告_Windows下JMeter分布式压测环境搭建
JMeter是Apache组织开发的开源项目,设计之初用于性能测试,同时它在实现对各种接口的调用方面做得比较成熟,因此,常被用于接口功能测试和性能测试.它能够很好的支持各种常见接口,如HTTP(S). ...
最新文章
- 学会和同事相处的30个原则
- java channelexec_java-使用SSH exec通道调用Shell脚本,但忽略对其他Shell脚本的调用
- html中剪切图片所用插件,简单功能强大的jQuery图片剪裁插件Image Cropper
- C# 使用 Windows API 操作控件: SendMessage
- vivado 仿真_提高Vivado效率一种自研工具介绍
- 2.9 while循环
- 曝张一鸣在游戏群批员工上班时聊游戏,遭回怼:那你退群啊
- 黄聪:解决wordpress定时发布文章失败”丢失计划任务”的插件
- Python项目部署到Docker的完整过程
- 计算机桌面的图标怎么删除,桌面图标删不掉怎么办 如何彻底删除桌面图标
- C函数篇(recv函数)
- 全栈工程师将会缔造下一个高薪群体
- 以太网进化历程半景-从10Mbps到1Tbps
- HotDB——布式事务数据库中不同数据库表对象的类型设计准测
- c语言任何一个大于6的偶数均可表示为两个素数之和,C语言:验证哥德巴赫猜想:任何一个大于6的偶数均可表示为2个素数之和...
- 全国计算机考试如何查准考证号
- 011-Java代理模式
- STM32G070芯片开发笔记:一、如何用ST送的学习板上的STLink烧录调试
- 倾一世烟花,爱已成痴
- 做seo为什么要了解网站
热门文章
- JavaScript(三)——对象与数组基础及API
- Ajax(一)——Ajax基础概念,HTTP头部(重点)
- Java形参的改变不会影响实参
- http://java.sun.com/jsp/jstl/core cannot be resolved(含有jstl1.2jar包网盘)
- JAVA RPC (六) 之thrift反序列化RPC消息体
- 理解Python的With语句
- Ubuntu Touch 预览版安装过程解析
- MaxDos启动盘拆解
- css的工作原理及使用规则
- HTTP之Cookie