apache-kafka - Kafka producer Bench-marking,无法理解结果
问题描述
我正在对 Kafka 生产者进行简单的基准测试。我的集群有 3 个 Kafka 代理。我创建了 2 个主题。
topic_one : 1 分区 1 复制
topic_two : 3 分区 1 复制
我编写了一些代码 eclipse 来向该主题发送消息。向两个主题发送 100,000 条消息(每个 1kB)(模式:同步)
topic_one 需要 33s ~ 34s
topic_two 需要 65s ~ 68s
接下来我打开另一个 Eclipse 并同时运行两个应用程序以模拟 2 个生产者客户端同时发送。向两个主题发送 100,000 条消息(每个 1kB)(模式:同步)
topic_one 需要 39s ~ 43s
topic_two 需要 53s ~ 54s
我对结果有点困惑。从本文中了解到,拥有更多分区确实会增加吞吐量。
但是对于 topic_two,当我使用 2 个客户端时,与单独运行 1 个客户端相比,两个客户端都有更好的时间。
100MB/65s ~ 68s VS 200MB/53s ~ 54s
我知道这种基准测试方式并不完全准确,因为两个应用程序都是通过同一个网络端口发送的。但我仍然无法理解结果。
结果是预期的吗?还是我做错了?
任何帮助我理解 Kafka 分区的文章/链接也将不胜感激。谢谢!
代码:
long startTime;
long endTime;
int messageNo = 0;
startTime = System.currentTimeMillis();
while (messageNo < 100000) {
try {
producer.send(new ProducerRecord<>(topic,
messageNo,
messageStr)).get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
// handle the exception
}
++messageNo;
}
endTime = System.currentTimeMillis();
解决方案
推荐阅读
- javascript - 计算输入之间的百分比,然后使用 Jquery 根据结果百分比更改背景颜色
- azure - 如何在 APIM 策略中定义数组变量
- google-bigquery - bigquery 中的 REGEXP_CONTAINS 顺序和 Case 语句
- redis - Redis 与 etcdv3 的性能差异
- php - 为什么 response()->download($url); 给出的文件不存在?
- datetime - 每分钟创建一次弹性搜索索引
- c - C 编程:使用格式说明符
- javascript - 如何将对象中的值组合到数组中
- sql - VBA 中的 SQL 语句无法识别我的 Excel 工作表
- .net - CK 编辑器(版本 5)粘贴屏幕截图不适用于反应 js