前言

项目最近需要接入一个推送功能,之前都是用云端内部接口模拟推送诊修消息的,但是实际触发场景是:诊修服务会将消息下发到kafka充当生产者,然后kafka推送给下游云端进行消费,所以,要模拟生产者往kafka推送消息,并且还要模拟批量推送的场景,以便掌握批量推送诊修消息的性能是否满足正常要求(每秒20~50条左右的强度)

性能场景(jmeter)

jmeter工具是常规性能测试工具,功能比较完善,这里选择此工具作为性能场景的测试工具,下面说下大致测试思路以及工具的使用方法。

思路

首先要先确认或者调研一下,推送频率的两个维度,同一时间点内和同一时间段内,推送的强度有多大(如果按上述诊修逻辑来看,基本不会出现大并发量的)。

如果是每秒20~50条的强度推送的话,不需要设置集合点,可以设置在多少秒内全部启动20~50个线程场景进行验证(ramp-up就是设置多少秒启动所有线程的方式,如果设置为0代表立即启动所有线程),然后监控kafka的消费者对应的服务性能(alarm)

方法

1.jmeter设置线程配置

 2.需要下载一个jar包,放到jmeter的lib/ext路径下kafkameter-0.2.0.jar,见下图

 3.线程组下添加java请求

4.按照实际地址改以下四个栏位数据

kafka_brokers--kafka的ip地址

kafka_topic--topic的名称

kafka_key -- 随便填

kafka_message --消息推送内容

其中,消息内容,加了随机函数和时间函数,用来区分批量数据,模板如下:

[{ "type":${__Random(1001,1003,id)}, "terminal":"10256960901", "content":{"faultContent":[{"faulttitle":"gx增压温度传感器或线束故障或温度异常${__time(,time)}"}],"terminal":"099034779244","carLon":"113.412648","faultLevel":"1","faultDesc":"","faultName":"增压温度采集电压超出上限值","carLat":"23.177706","faultCode":"P007A12","faultId":"60d3df53e4b092b899c4b939","vin":"LFWNHXSE0HAD15717","location":"广东省广州市天河区新塘街道高普路","time":"2021-06-24 09:26:42","faultSystem":"EMS","registerCode":"60d3df53e4b092b899c4b939"} }]

备注:上面模板中的terminal取自car表的auto_terminal字段,且设备必须在线状态,且校验tkui_car表

 

 

5.推送一个线程看下结果(前提是此设备必须在线状态,否则不会推)

 一般推送场景(python)

导入kafka的包,然后模拟生产者向指定的kafka地址推送单个消息(这里推送的消息可以放到excel中,然后读取,后面如有需要可以优化),也可以写个循环语句,推送指定次数的消息

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐