V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chaleaochexist
V2EX  ›  程序员

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

  •  
  •   chaleaochexist · 253 天前 · 1668 次点击
    这是一个创建于 253 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    用的 github.com/segmentio/kafka-go

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

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

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

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

    你的用法不就是加特林点射嘛。。。
    chaleaochexist
        7
    chaleaochexist  
    OP
       253 天前
    @lbbff 是的大佬 最后我发现问题了
    默认是自动 commit offset
    我改成 10 秒间隔 就变成 50000+/秒了...
    istomyang
        8
    istomyang  
       252 天前 via Android
    kafka 和 rocketmq 是几十万这个规模,kafka 是批量发所以延迟高,rocketmq 生态不如 kafka 。

    如果百万级,先看看能不能分片,提供吞吐量无非那几种方法。
    Maerd
        9
    Maerd  
       252 天前
    @lbbff python 能消费 3w 条?用的 confluent 的那个库吗?我之前用的时候发现 aiokafka 比 confluent-kafka 要慢不少,但是前者支持异步,就很难取舍
    lbbff
        10
    lbbff  
       252 天前 via Android
    @Maerd 我只是消费后写文件,如果你还有其他操作肯定会更慢,比如把写文本文件改成写 gzip 就会降低到 22000 左右,还有就是需要批量拉取数据,而且不是每批量拉的越多越好,需要自己测试最佳数量
    Maerd
        11
    Maerd  
       252 天前
    @lbbff 我没有操作,是纯消费 benchmark ,confluent-kafka 每秒能消费 10w 条左右,aiokafka 只能 1-2w
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2700 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 11:41 · PVG 19:41 · LAX 04:41 · JFK 07:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.