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

170 天前
 sniperking1234

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

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

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

(推荐一下我的 kafka gui 客户端,非常好用: https://github.com/Bronya0/Kafka-King/)

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

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

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

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

© 2021 V2EX