热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JMeter进行ApacheKafka负载测试

1.卡夫卡负载测试在这个ApacheKafka教程中,我们将了解如何使用ApacheJMeter,如何在ApacheKafka上执行Kafka负载测试。此外,这个Kafka负载测试

1.卡夫卡负载测试

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

JMeter进行Apache 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

JMeter进行Apache Kafka负载测试

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 cOnsumer= new KafkaConsumer(props);
     consumer.subscribe(Arrays.asList(topic));
     System.out.println("Subscribed to topic " + topic);
     int i = 0;
     while (true) {
        ConsumerRecords records = con-sumer.poll(100);
           for (ConsumerRecord record : records)
              System.out.printf("offset = %d, key = %s, value = %s\n",
              record.offset(), record.key(), record.value());
     }

 

 
  1. 基本上,执行连接配置。
  2. 此外,还要指定一个主题并对其进行订阅。
  3. 此外,消息在本主题的循环中被接收,并且也被带到控制台。

因此,对于JMeter中的JSR223采样器,所有这些代码都将添加一些修改。

5.在JMeter中构建Kafka负载测试场景

在了解了创建负载所需的所有必要元素之后,现在让我们将几条消息发布到我们的Kafka服务主题上。因此,假设我们有一个资源,从中收集有关其活动的数据。信息将作为XML文档发送。
使用命令学习Apache Kafka Operations

  1. 首先,添加Pepper-Box PlainText配置并创建模板。但是,消息的结构如下:消息号,消息ID,从中收集统计信息的项ID,统计信息,发送日期戳。
  2. 此外,添加PepperBoxKafkaSampler,并从我们的Kafka服务中指定bootstrap.servers和kafka.topic.name的地址。
  3. 然后,将带有使用者代码的JSR223 Sampler添加到单独的Thread Group。此外,我们将需要kafka-clients-xxxxjar文件,以便它可以工作。它带有与Kafka合作的课程。我们可以在我们的Kafka目录中找到它 - / kafka / lib。

在这里,我们不是在控制台中显示脚本,而是修改了部分脚本,现在将数据保存到文件中。它实际上是为了更方便地分析结果。此外,我们添加了设置消费者执行时间所必需的部分。 

  1. 更新部分:
  2. 长t =系统。currentTimeMillis ;
  3. long end = t + 5000 ;
  4. f = new FileOutputStream “。\\ data.csv” ,true ;
  5. p = new PrintStream f ;
  6. 系统。的currentTimeMillis <端
  7. {
  8. ConsumerRecords records = consumer。民意调查100 ;
  9. for ConsumerRecord record:records
  10. {
  11. 页。的println “偏移=” +记录。偏移+ “的值=” +记录。;
  12. }
  13. 消费者。commitSync ;
  14. }
  15. 消费者。close ;
  16. 页。close ;
  17. F。close ;

结果,脚本的结构如下所示。这里,两个线程同时工作。Kafka Producers开始向指定主题发布消息,Kafka消费者连接到主题并等待来自Kafka的消息。此外,它在消费者收到消息时将消息写入文件。
让我们学习Apache Kafka Workflow | Kafka Pub-Sub Messaging

  1. 最后,运行脚本并查看结果。

我们可以在打开的文件中看到收到的消息。虽然,我们只需要调整消费者和生产者的数量来增加负荷。
注意:在测试期间不要使用随机数据作为消息,因为它们的大小可能与当前大小不同,并且这种差异可能会影响测试结果。
所以,这就是如何在Apache Kafka中使用JMeter加载测试。希望您喜欢我们使用JMeter对Kafka负载测试的解释。

六,结论

因此,我们已经了解了如何使用JMeter对Apache Kafka进行负载测试。此外,在Kafka负载测试中,我们看到使用JMeter配置生产者和消费者以及为Kafka加载测试工具。最后,我们学习了如何在JMeter中构建Kafka负载测试场景。但是,如果您对使用JMeter的Kafka负载测试有任何疑问,请随时通过评论选项卡询问。

 


推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文介绍了在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一,尤其是在大规模系统中,数据库集群已经成为必备的配置之一。文章详细介绍了主从数据库架构的好处和实验环境的搭建方法,包括主数据库的配置文件修改和设置需要同步的数据库等内容。MySQL的主从复制功能在国内外大型网站架构体系中被广泛采用,本文总结了作者在实际的Web项目中的实践经验。 ... [详细]
  • 你知道Kafka和Redis的各自优缺点吗?一文带你优化选择,不走弯路 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • .htaccess文件 ... [详细]
  • Windows系统 查询已开通的端口号和对外开放端口号
    查询端口号开放情况:查看该端口被那个PID所占用;方法一:有针对性的查看端口,使用命令:netstat–ano|findstr“”netstat-a对外开放端口号参考ht ... [详细]
  • 讨伐Java多线程与高并发——MQ篇
    本文是学习Java多线程与高并发知识时做的笔记。这部分内容比较多,按照内容分为5个部分:多线程基础篇JUC篇同步容器和并发容器篇线程池篇MQ篇本篇 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
author-avatar
美竹
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有