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

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

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

    对 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  
       281 天前
    你不用合并,producer 通常自己会按批发送,你这种情况可以配置批次 size 大些,等待久些,从而优化吞吐。

    (推荐一下我的 kafka gui 客户端,非常好用: https://github.com/Bronya0/Kafka-King/)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1368 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:35 · PVG 01:35 · LAX 09:35 · JFK 12:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.