出于测试目的,我需要模拟客户端每秒生成100000条消息,并将它们发送到kafka topic。有没有什么工具或方法可以帮助我生成这些随机消息?
yvt65v4c1#
您可以使用kafka connect生成随机测试数据。查看此自定义源连接器https://github.com/xushiyan/kafka-connect-datagen它允许您定义一些设置,如消息模板和随机字段来生成测试数据。也可以查看这篇文章的详细演示。
oknrviil2#
有一个生成虚拟负载的内置工具,位于 bin/kafka-producer-perf-test.sh (https://github.com/apache/kafka/blob/trunk/bin/kafka-producer-perf-test.sh). 你可以参考https://github.com/apache/kafka/blob/trunk/tools/src/main/java/org/apache/kafka/tools/producerperformance.java#l106 想知道如何使用它。一个使用示例如下:
bin/kafka-producer-perf-test.sh
bin/kafka-producer-perf-test.sh --broker-list localhost:9092 --messages 10000000 --topic test --threads 10 --message-size 100 --batch-size 10000 --throughput 100000
这里的关键是 --throughput 100000 指示“将最大消息量限制为每秒约100000条消息”的标志
--throughput 100000
bwitn5fc3#
现有的答案(例如,kafka producer perf test.sh)对于性能测试很有用,但当您需要生成的不仅仅是“单个原始字节流”时,就没有那么有用了。例如,如果您需要用嵌套结构模拟更真实的数据,或者在多个主题中生成相互之间有某种关系的数据,那么它们是不够的。因此,如果您需要的不仅仅是生成一堆原始字节,我会看看下面的备选方案。更新:从今天起,我建议使用https://github.com/michaeldrogalis/voluble. 一些背景信息:作者是kafka streams和ksqldb confluent的产品经理,也是http://www.onyxplatform.org/.来自滔滔不绝的自述:通过与javafaker集成来创建真实的数据。跨主题关系填充记录的键和值生成基本值和复杂/嵌套值有界或无界数据流墓碑voluble作为kafka连接器提供,可以方便地扩展和更改序列化格式。您可以通过其restapi使用kafka connect,也可以与ksqldb集成。在本指南中,我将演示如何使用后者,但两者的配置是相同的。我省略了特定于连接的配置,比如序列化程序和需要为任何连接器配置的任务。老答案(2016):我建议你看看https://github.com/josephadler/eventsim,这将产生更“真实”的合成数据(是的,我知道我刚才所说的具有讽刺意味:-p):eventsim是一个生成用于测试和演示的事件数据的程序。它是用scala编写的,因为我们是大数据的潮人(至少有时是这样)。它被设计用来复制一个假音乐网站的页面请求(比如spotify);结果看起来像真实使用的数据,但完全是假的。您可以将程序配置为创建任意多的数据:几个小时内仅为少数用户创建的数据,或多年来为大量用户创建的数据。您可以将数据写入文件,或者通过管道将其输出到ApacheKafka。您可以将这些虚假数据用于产品开发、正确性测试、演示、性能测试、培训,或者在任何其他看起来真实的数据流有用的地方。你可能不应该用这些数据来研究机器学习算法,也绝对不应该用它来了解真实的人的行为。
3条答案
按热度按时间yvt65v4c1#
您可以使用kafka connect生成随机测试数据。查看此自定义源连接器https://github.com/xushiyan/kafka-connect-datagen
它允许您定义一些设置,如消息模板和随机字段来生成测试数据。也可以查看这篇文章的详细演示。
oknrviil2#
有一个生成虚拟负载的内置工具,位于
bin/kafka-producer-perf-test.sh
(https://github.com/apache/kafka/blob/trunk/bin/kafka-producer-perf-test.sh). 你可以参考https://github.com/apache/kafka/blob/trunk/tools/src/main/java/org/apache/kafka/tools/producerperformance.java#l106 想知道如何使用它。一个使用示例如下:
这里的关键是
--throughput 100000
指示“将最大消息量限制为每秒约100000条消息”的标志bwitn5fc3#
现有的答案(例如,kafka producer perf test.sh)对于性能测试很有用,但当您需要生成的不仅仅是“单个原始字节流”时,就没有那么有用了。例如,如果您需要用嵌套结构模拟更真实的数据,或者在多个主题中生成相互之间有某种关系的数据,那么它们是不够的。因此,如果您需要的不仅仅是生成一堆原始字节,我会看看下面的备选方案。
更新:从今天起,我建议使用https://github.com/michaeldrogalis/voluble. 一些背景信息:作者是kafka streams和ksqldb confluent的产品经理,也是http://www.onyxplatform.org/.
来自滔滔不绝的自述:
通过与javafaker集成来创建真实的数据。
跨主题关系
填充记录的键和值
生成基本值和复杂/嵌套值
有界或无界数据流
墓碑
voluble作为kafka连接器提供,可以方便地扩展和更改序列化格式。您可以通过其restapi使用kafka connect,也可以与ksqldb集成。在本指南中,我将演示如何使用后者,但两者的配置是相同的。我省略了特定于连接的配置,比如序列化程序和需要为任何连接器配置的任务。
老答案(2016):我建议你看看https://github.com/josephadler/eventsim,这将产生更“真实”的合成数据(是的,我知道我刚才所说的具有讽刺意味:-p):
eventsim是一个生成用于测试和演示的事件数据的程序。它是用scala编写的,因为我们是大数据的潮人(至少有时是这样)。它被设计用来复制一个假音乐网站的页面请求(比如spotify);结果看起来像真实使用的数据,但完全是假的。您可以将程序配置为创建任意多的数据:几个小时内仅为少数用户创建的数据,或多年来为大量用户创建的数据。您可以将数据写入文件,或者通过管道将其输出到ApacheKafka。
您可以将这些虚假数据用于产品开发、正确性测试、演示、性能测试、培训,或者在任何其他看起来真实的数据流有用的地方。你可能不应该用这些数据来研究机器学习算法,也绝对不应该用它来了解真实的人的行为。