kafka 单消费者 每秒能消费多少条数据?

2023-08-18 14:29:26 +08:00
 chaleaochexist

我知道这个问题问的不太严谨.

  1. 通常来说
  2. 硬件不好不坏 譬如 2 核 8G 内存这样
  3. 单消费者

我这边测试, 什么都不干, 只读数据然后记一个 log. 差不多 1M/秒 1500 条数据/秒

用的 github.com/segmentio/kafka-go

还有优化空间吗? 因为我在网上看 kafka 的极限数据都很恐怖 百万/秒 不太懂, 希望大佬给点思路.

1962 次点击
所在节点    程序员
11 条回复
coderYang
2023-08-18 14:43:49 +08:00
单消费者可以理解为只有单服务的情况下,我个人觉得有几个方向可以考虑
1 、batch 为 true,concurrency 看看开多少个线程比较好
2 、max-poll-records 每次拉取的数量可以跳大一点,这个可以自己测试
3 、带宽会很大程度的影响消费量
nothingistrue
2023-08-18 14:45:12 +08:00
消费速度,更多得取决于如何消费。你把消费方式,改成接受到消息后,再异步转发出去做后续实际的处理,就能感受到百万/秒的消费了。不过这样做没多大意义。这个百万/秒 ,更多的意义是用在消息发布和并发消费这两个场景。
xx6412223
2023-08-18 14:48:42 +08:00
加配置前:
1 调整参数:搜一下 *max*真对 consumer 的参数
2 加分区和消费者数量
3 优化 consumer 的业务逻辑,比如改成异步写入日志

你看的网上百万是脱离业务的理想值,不值得去深究,根据你自己的需求,最后:

4 压力测试后,如果 kafka 是短板的话,针对性加配置,加带宽。
lsk569937453
2023-08-18 15:09:21 +08:00
每秒消费多少取决于 broker 个数和你的服务端消费线程数啊。
lbbff
2023-08-18 15:16:26 +08:00
1500 确实少了点,我也是单 broker ,jvm 设置 4G ,i5 10400 ,python 写的消费,大概 38000 条每秒,22MB/s
8355
2023-08-18 15:25:20 +08:00
先了解 kafka 的分区和消费者的关系,其次如果单消费者不如直接用 redis 。

你的用法不就是加特林点射嘛。。。
chaleaochexist
2023-08-18 15:45:16 +08:00
@lbbff 是的大佬 最后我发现问题了
默认是自动 commit offset
我改成 10 秒间隔 就变成 50000+/秒了...
istomyang
2023-08-18 22:47:28 +08:00
kafka 和 rocketmq 是几十万这个规模,kafka 是批量发所以延迟高,rocketmq 生态不如 kafka 。

如果百万级,先看看能不能分片,提供吞吐量无非那几种方法。
Maerd
2023-08-19 01:15:45 +08:00
@lbbff python 能消费 3w 条?用的 confluent 的那个库吗?我之前用的时候发现 aiokafka 比 confluent-kafka 要慢不少,但是前者支持异步,就很难取舍
lbbff
2023-08-19 12:13:58 +08:00
@Maerd 我只是消费后写文件,如果你还有其他操作肯定会更慢,比如把写文本文件改成写 gzip 就会降低到 22000 左右,还有就是需要批量拉取数据,而且不是每批量拉的越多越好,需要自己测试最佳数量
Maerd
2023-08-19 14:43:40 +08:00
@lbbff 我没有操作,是纯消费 benchmark ,confluent-kafka 每秒能消费 10w 条左右,aiokafka 只能 1-2w

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/966437

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX