【问题标题】:Work distribution with Kafka Streams使用 Kafka Streams 进行工作分配
【发布时间】:2016-07-04 09:36:43
【问题描述】:

我正在使用 Kafka Streams 来处理 Kafka 主题的并发工作。

流的形式如下

stream(topic)
 .map(somefunction)
 .through(secondtopic)

我已将KStreams 设置为拥有 15 个工作线程,但似乎线程之间的工作没有正确平衡(或根本没有平衡)。我的设置可能有问题吗?我原以为工作会在工作线程之间平均分配,但似乎情况并非如此。

snapshot from jvisualvm

【问题讨论】:

  • 您的主题中有多少个可用分区?
  • jvisualvm 快照链接已损坏。

标签: apache-kafka apache-kafka-streams


【解决方案1】:

您只能拥有与输入 Kafka 主题分区一样多的线程。

一个分区中的消息由单个线程处理,以提供消息传递的总顺序。

实际上,在 KafkaStreams 中,输入主题分区是均匀分布在任务而不是消息之间的。

因此,只有当消息在分区之间得到很好的平衡时,线程之间的工作才能得到很好的平衡。

要获取有关线程模型的更多信息,请查看Confluent documentation

【讨论】:

  • “因此,只有在分区之间的消息平衡良好的情况下,线程之间的工作才能很好地平衡。”是这里的症结所在。
  • @dmead 如果您对它感到满意,您应该接受这个答案。
猜你喜欢
  • 2018-04-19
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
  • 2018-06-15
相关资源
最近更新 更多