kafka 性能问题: kafka 传递海量小数据的时候,需要合并数据发送吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sniperking1234
V2EX    Kafka

kafka 性能问题: kafka 传递海量小数据的时候,需要合并数据发送吗

  •  
  •   sniperking1234 2023-11-21 10:12:29 +08:00 3274 次点击
    这是一个创建于 697 天前的主题,其中的信息可能已经有所发展或是发生改变。

    对 kafka 不了解,求助下 v 友。

    场景是有很多小数据需要通过 kafka 发送,每条数据的量不到 1kb ,但是高峰期数量很多,这种情况下,小数据会不会影响 kafka 性能,需要把数据合并成数组,批量发送吗。kafka 在哪种情况下性能会好一些呢。

    13 条回复    2024-02-21 21:46:40 +08:00
    bthulu
        1
    bthulu  
       2023-11-21 10:14:30 +08:00   1
    不需要, kafka 永远值得你相信
    sampdoria
        2
    sampdoria  
       2023-11-21 10:18:08 +08:00
    不用
    关于 Kafka 的 IO ,可以看一下这篇 https://juejin.cn/post/7068090666969989151
    sighforever
        3
    sighforever  
       2023-11-21 10:29:58 +08:00
    我记得 kafka 的客户端本来就会合并发送
    BBCCBB
        4
    BBCCBB  
       2023-11-21 10:36:40 +08:00
    没有提供批量的 api, 但通过 linger.ms 和 batchSize 配置, kafka client 默认就是批量的..
    sniperking1234
        5
    sniperking1234  
    OP
       2023-11-21 10:37:25 +08:00
    @bthulu @sampdoria 多谢,我去看下相关资料
    sniperking1234
        6
    sniperking1234  
    OP
       2023-11-21 10:38:02 +08:00
    @sighforever 对,是有相关的参数,但是不清楚内部处理小数据会不会影响性能
    lessMonologue
        7
    lessMonologue  
       2023-11-21 10:39:04 +08:00
    不需要,client 会自己处理成 bantch 发送
    fxbing
        8
    fxbing  
       2023-11-21 10:43:16 +08:00
    只要别指定顺序 key 就行,默认按 key 分配分区,如果不同消息不同 key 就会导致攒不了 batch
    yosoroAida
        9
    yosoroAida  
       2023-11-21 11:02:16 +08:00
    好像 client 默认情况下每隔一秒就 batch 发送
    vincent7245
        10
    vincent7245  
       2023-11-21 11:44:58 +08:00
    1 生产者和消费者客户端都是可以设置批量大小的,而且默认就是小批量发送和接收的,你可以查一下官方文档
    2 kafka 服务本身是有 cache 的,只要消费及时,数据是直接走内存的,没有磁盘 IO 性能问题。
    3 网络 IO 取决于你的机器性能,不过一般的场景不会有性能问题,至少我们 TB 级的数据量都还没遇到过性能瓶颈
    CEBBCAT
        11
    CEBBCAT  
       2023-11-21 13:23:44 +08:00
    如有疑惑,可以压测。(也许是个实践压测的好机会?
    sniperking1234
        12
    sniperking1234  
    OP
       2023-11-21 19:19:31 +08:00
    bronyakaka
        13
    bronyakaka  
       2024-02-21 21:46:40 +08:00
    你不用合并,producer 通常自己会按批发送,你这种情况可以配置批次 size 大些,等待久些,从而优化吞吐。

    (推荐一下我的 kafka gui 客户端,非常好用: https://github.com/Bronya0/Kafka-King/)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2546 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 11:57 PVG 19:57 LAX 04:57 JFK 07:57
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86