JMeter进行Apache Kafka负载测试
1.卡夫卡负载测试
在这个Apache Kafka教程中,我们将了解如何使用Apache JMeter,如何在Apache Kafka上执行Kafka负载测试。此外,这个Kafka负载测试教程教我们如何配置生产者和消费者,这意味着使用JMeter 开发Apache Kafka Consumer和Kafka Producer。最后,我们将看到在Jmeter中构建Kafka负载测试场景。然而,在Kafka负载测试之前,让我们学习Kafka的简要介绍,以便更好地理解其他工作。

使用JMeter进行Apache Kafka负载测试
2.什么是Apache Kafka?
简而言之,Apache Kafka是分布式数据库和消息队列的混合体。为了处理数TB的信息,许多大公司都在使用它。此外,由于其功能,卡夫卡广受欢迎。例如,像LinkedIn这样的公司使用它来传输有关用户活动的数据,而像Netflix这样的公司则使用它来为下游系统(如Elasticsearch,Amazon EMR,Mantis等)进行数据收集和缓冲。
此外,让我们了解Kafka的一些对Kafka负载测试很重要的功能:
- 默认情况下,长消息存储时间 - 一周。
- 由于顺序I / O,性能高。
- 此外,方便的群集。
- 要在群集中复制和分发队列,由于该功能,数据具有高可用性。
- 除了数据传输,它还可以使用Streaming API进行处理。
我们知道,为了处理大量数据,我们使用Kafka。因此,在使用JMeter进行Kafka负载测试时,请注意以下几个方面:
- 如果我们不断地将数据写入磁盘,那将影响服务器的容量。因为,如果不足,它将达到拒绝服务状态。
- 但是,部门的分布和经纪人的数量也会影响服务能力的使用。
- 但是,当我们使用复制功能时,一切都变得更加复杂。其背后的原因是,它的维护需要更多的资源,而经纪人拒绝接收消息的情况变得更加可能。
请点击链接以了解有关Kafka的更多信息
尽管如此,即使大多数流程都是自动化的,但数据处理时数据可能会丢失。因此,我们可以说对这些服务的测试非常重要,并且能够生成适当的负载也是必不可少的。
确保,Apache Kafka负载测试将安装在Ubuntu上,以便进行演示。此外,我们将使用Pepper-Box插件作为制作人,因为它比kafkameter更方便地使用消息生成。但是,没有插件提供消费者实现,因此我们必须自己实现消费者。而且,我们将使用JSR223采样器做到这一点。现在,让我们转向Kafka负载测试。
探索Apache Kafka用例| 卡夫卡应用程序
3.配置制作人 - Pepper-Box
现在,为了安装插件,我们需要编译这个源代码或下载 jar文件。此外,我们需要将它放在lib / ext文件夹中并重新启动JMeter。

Kafka负载测试:配置Producer
基本上,这个插件有3个元素:
- Pepper-Box PlainText配置
它允许根据指定的模板构建文本消息。
- Pepper-Box序列化配置
此配置允许构建作为序列化java对象的消息。
- PepperBoxKafkaSampler
它旨在发送由先前元素构建的消息。
了解有关Kafka Producer的更多信息,请点击此链接
让我们详细了解Kafka负载测试的所有这些配置:
一个。Pepper-Box PlainText配置
请按照下列步骤来添加这个项目,首先要到线程组- >添加- >配置元件- >胡椒盒纯文本配置
卡夫卡负载测试胡椒盒纯文本Config元素有2个字段:
一世。消息占位符密钥
虽然我们想要使用此元素中的模板,但它是需要在PepperBoxKafkaSampler中指定的键。
II。架构模板
这是我们可以使用JMeter变量和函数的消息模板,也可以是插件函数。但是,此消息结构可以是任何内容,从纯文本到JSON或XML。
湾 Pepper-Box序列化配置
现在,按照几个步骤添加此元素,首先转到线程组 - >添加 - >配置元素 - > Pepper-Box序列化配置
但是,此元素有一个键的字段和类名字段,用于指定在Java类。确保带有类的jar文件必须放在lib / ext文件夹中。因此,具有其属性的字段将在指定之后显示在下面,并且还可以现在为它们分配所需的值。虽然,我们在这里再次重复了最后一个元素的消息,但这次它将是一个Java对象。
C。 PepperBoxKafkaSampler
此外,要添加此元素,请按照下列步骤操作。首先转到Thread组 - > Add - > Sampler - > Java Request。然后,从下拉列表中选择com.gslab.pepper.sampler.PepperBoxKafkaSampler。
基本上,此元素有以下设置:
- bootstrap.servers / zookeeper.servers
经纪人/动物园管理员的地址,格式为broker-ip-1:port,broker-ip-2:port等。
- kafka.topic.name
它是消息发布主题的名称。
Apache Kafka架构及其基本概念
- key.serializer
但是,它是一个用于密钥序列化的类。如果消息中没有密钥,请保持不变。
- value.serializes
它是消息序列化的类。对于简单的文本,该字段保持不变。我们需要在使用Pepper-Box Serialized Config时指定“com.gslab.pepper.input.serialized.ObjectSerializer”。
- compression.type
基本上,它是一种消息压缩(无/ gzip / snappy / lz4)
- batch.size
这是最大的邮件大小。
- linger.ms
这被视为消息等待时间。
- buffer.memory
它是生产者的缓冲区大小。
- 的ack
这是服务质量(-1/0/1 - 无法保证交付/肯定会传递消息/消息将被传送一次)。
- receive.buffer.bytes / send.buffer.bytes
它是TCP发送/接收缓冲区的大小。-1 - 使用默认OS值。
- security.protocol
这是加密协议(PLAINTEXT / SSL / SASL_PLAINTEXT / SASL_SSL)。
- message.placeholder.key
它是消息键,在前面的元素中指定。
- kerberos.auth.enabled,java.security.auth.login.config,java.security.krb5.conf,sasl.kerberos.service.name
这些都是负责身份验证的字段组。
通常,如有必要,我们可以在名称前使用前缀_添加其他参数。
例如,
_ssl.key.password。
看看卡夫卡的优缺点
4.配置消费者
由于我们有一个在服务器上创建最大负载的生产者,因此该服务也必须传递消息。因此,为了更准确地再现这些情况,我们还应该增加消费者。此外,我们还可以使用它来检查是否已传递所有消费者消息。
例如,
让我们采用以下源代码并简要介绍其步骤,以便更好地理解Kafka负载测试:
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("group.id", group);
props.put("enable.auto.commit", "true");
props.put("auto.commit.interval.ms", "1000");
props.put("session.timeout.ms", "30000");
props.put("key.deserializer",
"org.apache.kafka.common.serializa-tion.StringDeserializer");
props.put("value.deserializer",
"org.apache.kafka.common.serializa-tion.StringDeserializer");
KafkaConsumer<String, String> consumer = new KafkaConsumer<String, String>(props);
consumer.subscribe(Arrays.asList(topic));
System.out.println("Subscribed to topic " + topic);
int i = 0;
while (true) {
ConsumerRecords<String, String> records = con-sumer.poll(100);
for (ConsumerRecord<String, String> record : records)
System.out.printf("offset = %d, key = %s, value = %s\n",
record.offset(), record.key(), record.value());
}
- 基本上,执行连接配置。
- 此外,还要指定一个主题并对其进行订阅。
- 此外,消息在本主题的循环中被接收,并且也被带到控制台。
因此,对于JMeter中的JSR223采样器,所有这些代码都将添加一些修改。
5.在JMeter中构建Kafka负载测试场景
在了解了创建负载所需的所有必要元素之后,现在让我们将几条消息发布到我们的Kafka服务主题上。因此,假设我们有一个资源,从中收集有关其活动的数据。信息将作为XML文档发送。
使用命令学习Apache Kafka Operations
- 首先,添加Pepper-Box PlainText配置并创建模板。但是,消息的结构如下:消息号,消息ID,从中收集统计信息的项ID,统计信息,发送日期戳。
- 此外,添加PepperBoxKafkaSampler,并从我们的Kafka服务中指定bootstrap.servers和kafka.topic.name的地址。
- 然后,将带有使用者代码的JSR223 Sampler添加到单独的Thread Group。此外,我们将需要kafka-clients-xxxxjar文件,以便它可以工作。它带有与Kafka合作的课程。我们可以在我们的Kafka目录中找到它 - / kafka / lib。
在这里,我们不是在控制台中显示脚本,而是修改了部分脚本,现在将数据保存到文件中。它实际上是为了更方便地分析结果。此外,我们添加了设置消费者执行时间所必需的部分。
- 更新部分:
- 长t =系统。currentTimeMillis ();
- long end = t + 5000 ;
- f = new FileOutputStream (“。\\ data.csv” ,true );
- p = new PrintStream (f );
- 而(系统。的currentTimeMillis ()<端)
- {
- ConsumerRecords <String,String> records = consumer。民意调查(100 );
- for (ConsumerRecord <String,String> record:records )
- {
- 页。的println (“偏移=” +记录。偏移()+ “的值=” +记录。值());
- }
- 消费者。commitSync ();
- }
- 消费者。close ();
- 页。close ();
- F。close ();
结果,脚本的结构如下所示。这里,两个线程同时工作。Kafka Producers开始向指定主题发布消息,Kafka消费者连接到主题并等待来自Kafka的消息。此外,它在消费者收到消息时将消息写入文件。
让我们学习Apache Kafka Workflow | Kafka Pub-Sub Messaging
- 最后,运行脚本并查看结果。
我们可以在打开的文件中看到收到的消息。虽然,我们只需要调整消费者和生产者的数量来增加负荷。
注意:在测试期间不要使用随机数据作为消息,因为它们的大小可能与当前大小不同,并且这种差异可能会影响测试结果。
所以,这就是如何在Apache Kafka中使用JMeter加载测试。希望您喜欢我们使用JMeter对Kafka负载测试的解释。
六,结论
因此,我们已经了解了如何使用JMeter对Apache Kafka进行负载测试。此外,在Kafka负载测试中,我们看到使用JMeter配置生产者和消费者以及为Kafka加载测试工具。最后,我们学习了如何在JMeter中构建Kafka负载测试场景。但是,如果您对使用JMeter的Kafka负载测试有任何疑问,请随时通过评论选项卡询问。
JMeter进行Apache Kafka负载测试的更多相关文章
- 使用JMeter进行Apache Kafka负载测试
1.卡夫卡负载测试 在这个Apache Kafka教程中,我们将了解如何使用Apache JMeter,如何在Apache Kafka上执行Kafka负载测试.此外,这个Kafka负载测试教程教我们如 ...
- Jmeter实现简单web负载测试
Jmeter实现简单web负载测试 简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. ...
- 搭建基于Ant+Jmeter+jenkins的自动负载测试框架的若干问题记录及解决
1.关于构建时使用的默认build.xml问题 如图,如果构建脚本build.xml不在workspace根目录.或者说构建脚本不叫build.xml.那么需要在高级里设置Build File选项的 ...
- Apache JMeter开源压力测试/负载测试工具 2.12 官方最新版
软件介绍 Jmeter是一款使用Java开发的,开源免费的,测试工具, 主要用来做功能测试和性能测试(压力测试/负载测试),而且用Jmeter 来测试 Restful API, 非常好用. 如何学 ...
- Apache Kafka使用默认配置执行一些负载测试来完成性能测试和基准测试
Kafka是一种分布式,分区,复制的提交日志服务.它提供了消息传递系统的功能. 我们先来看看它的消息传递术语: Kafka在称为主题的类别中维护消息的提要. 我们将调用向Kafka主题生成器发布消 ...
- 使用JMeter进行负载测试——终极指南
这篇教程讨论的是JMeter,它是一款基于Java的.集合了几个应用程序.具有特定用途的负载和性能测试工具. 本篇主要涉及的内容: 解释一下JMeter的用途 JMeter的实现方式以及采用的技术 安 ...
- 【转】使用JMeter进行负载测试——终极指南
使用JMeter进行负载测试——终极指南 这篇教程讨论的是JMeter,它是一款基于Java的.集合了几个应用程序.具有特定用途的负载和性能测试工具. 本篇主要涉及的内容: 解释一下JMeter的用途 ...
- JMETER通过java代码通过代码/ JMETER API实现示例进行负载测试
本教程试图解释Jmeter的基本设计,功能和用法,Jmeter是用于在应用程序上执行负载测试的优秀工具.通过使用jmeter GUI,我们可以根据我们的要求为请求创建测试样本并执行具有多个用户负载的样 ...
- AWS EC2+Docker+JMeter构建分布式负载测试基础架构
目录 概述及范围 前提条件 Part 1: Local setup-本地配置 Part 2: Cloud端基础架构--Infrastructure 总结: 原文链接 @ 概述及范围 本文介绍有关如何使 ...
随机推荐
- Centos7安装使用Mysql(mariadb)
安装 shell> yum install mariadb-server -y 配置 # 修改文件 /etc/my.cnf [mysqld]datadir=/mydata/data/mysqlc ...
- 二分图匹配--KM算法
Kuhn-Munkres算法 KM算法,求完备匹配下的最大权匹配,时间复杂度O(\(n^3\)) 所谓的完备匹配就是在二部图中,x点集中的所有点都有对应的匹配 且 y点集中所有的点都有对应的匹配 ,则 ...
- 2019.12.09 java循环(while)
class Demo04 { public static void main(String[] args) { int sum=0; int i=1; while(i<=100){ //sum ...
- _purecall函数
默认纯虚拟函数调用错误处理程序. 当调用纯虚拟成员函数时,编译器生成调用此函数的代码. 原型: extern "C" int __cdecl _purecall(); _Purec ...
- WinDbg扩展
WinDbg的扩展,也可以叫插件.它用于实现针对特定调试目标的调试功能,用于扩展某一方面的调试功能.扩展的实现是通过扩展模块(DLL)实现的.Windbg本身已经包含了很多扩展命令,这些扩展为这Win ...
- ESP8266低功耗解决的其中一个问题(芯片发热,影响旁边的温湿度芯片)
这个项目的这个问题困扰了自己好长时间了,ESP8266芯片发热,导致了旁边的温湿度传感器采集不了空气中的温度....采集的温度是芯片发热的温度 一直采集出来的是30多度......尽管空气温度10几度 ...
- SQL基础-建表
一.建表 1.创建表的两种方式 *客户端工具 *SQL语句 2.使用SQL语句创建表 表名和字段名不能使用中文:(一般为字母开头,字母.数字.下划线组成的字符串): CREATE TABLE关键字后跟 ...
- mysql 分组条件筛选
mysql> select * from table1; +----------+------------+-----+---------------------+ | name_new | t ...
- 在Visual Studio中直接编译Fluent的UDF
VS版本:Visual Studio 2013 Fluent版本:Fluent18.2 首先我们启动VS Studio中直接编译Fluent的UDF" title="在Visual ...
- 地址栏从url输入到页面显示
本文链接:https://blog.csdn.net/MiemieWan/article/details/85708052地址栏输入url, 要通过dns解析(浏览器是不能识别url地址的,需解析成i ...