我知道这个问题问的不太严谨.
我这边测试, 什么都不干, 只读数据然后记一个 log. 差不多 1M/秒 1500 条数据/秒
用的 github.com/segmentio/kafka-go
还有优化空间吗? 因为我在网上看 kafka 的极限数据都很恐怖 百万/秒 不太懂, 希望大佬给点思路.
1
coderYang 2023-08-18 14:43:49 +08:00 1
单消费者可以理解为只有单服务的情况下,我个人觉得有几个方向可以考虑
1 、batch 为 true,concurrency 看看开多少个线程比较好 2 、max-poll-records 每次拉取的数量可以跳大一点,这个可以自己测试 3 、带宽会很大程度的影响消费量 |
2
nothingistrue 2023-08-18 14:45:12 +08:00 1
消费速度,更多得取决于如何消费。你把消费方式,改成接受到消息后,再异步转发出去做后续实际的处理,就能感受到百万/秒的消费了。不过这样做没多大意义。这个百万/秒 ,更多的意义是用在消息发布和并发消费这两个场景。
|
3
xx6412223 2023-08-18 14:48:42 +08:00 1
加配置前:
1 调整参数:搜一下 *max*真对 consumer 的参数 2 加分区和消费者数量 3 优化 consumer 的业务逻辑,比如改成异步写入日志 你看的网上百万是脱离业务的理想值,不值得去深究,根据你自己的需求,最后: 4 压力测试后,如果 kafka 是短板的话,针对性加配置,加带宽。 |
4
lsk569937453 2023-08-18 15:09:21 +08:00
每秒消费多少取决于 broker 个数和你的服务端消费线程数啊。
|
5
lbbff 2023-08-18 15:16:26 +08:00 via Android
1500 确实少了点,我也是单 broker ,jvm 设置 4G ,i5 10400 ,python 写的消费,大概 38000 条每秒,22MB/s
|
6
8355 2023-08-18 15:25:20 +08:00
先了解 kafka 的分区和消费者的关系,其次如果单消费者不如直接用 redis 。
你的用法不就是加特林点射嘛。。。 |
7
chaleaochexist OP |
8
istomyang 2023-08-18 22:47:28 +08:00 via Android
kafka 和 rocketmq 是几十万这个规模,kafka 是批量发所以延迟高,rocketmq 生态不如 kafka 。
如果百万级,先看看能不能分片,提供吞吐量无非那几种方法。 |
9
Maerd 2023-08-19 01:15:45 +08:00
@lbbff python 能消费 3w 条?用的 confluent 的那个库吗?我之前用的时候发现 aiokafka 比 confluent-kafka 要慢不少,但是前者支持异步,就很难取舍
|