首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保证在扩展节点的水平卡夫卡时进行快速数据处理

保证在扩展节点的水平卡夫卡时进行快速数据处理
EN

Stack Overflow用户
提问于 2020-12-03 09:31:13
回答 1查看 47关注 0票数 2

我用java构建了一个kafka应用程序,它具有:

  • 是一家生产卡夫卡唱片的生产商--卡夫卡
  • 是一种卡夫卡流,使用这些记录,对其值应用一些(时间窗口和状态存储)操作,并将它们发送回kafka
  • ,消费者消费这些转换后的值,并将它们写入数据库

我是测量卡夫卡时间戳的生产者(它被卡夫卡流消费)和消费者记录(它被消费者消费)之间的时间差。所以,基本上,当制作人的唱片被创建,当这张唱片被流转换,并被送回卡夫卡时。最后,我取了数据库中每个时差的平均值。

由于任何原因,当我向主题添加更多流节点和更多分区时,这种时间差就会增大。实际上,我预计时差会减小。现在,我想知道我是否做错了什么,或者通过增加节点数量,数据处理需要更长的时间。

最后,我的问题是:通过向kafka添加更多的节点,数据处理是否可能需要更长的时间?如果是的话,原因是甚麽呢?

EN

回答 1

Stack Overflow用户

发布于 2020-12-03 09:50:19

“是否可能通过向kafka添加更多节点来延长数据处理时间?如果可能,原因是什么?”

是的,这是有可能发生的,这在很大程度上取决于实际产生了多少数据。通过使用更多的分区/流节点,需要在数据量和并行性之间取得平衡,以避免不必要的开销。

在您的特殊情况下,我可以想到的主要原因是KafkaProducer端的批处理效率更高,分区数量更少。

假设您有10条消息和一个分区。KafkaProducer可能会将这10条消息合并成一批,并对其进行压缩,这似乎相当有效。

现在,如果您有10个消息和10个分区,使每个消息都进入自己的分区,那么KafkaProducer必须向代理发送10个单独的发送请求(每个分区一个),而且您的压缩率也比较低,因为您总是只压缩一条消息。

此外,如果您的KafkaProducer在同步模式下工作,它必须更频繁地等待代理的答复(这可能根据生产者配置acksmax.request.in.flight而有所不同)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65123197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档