【发布时间】:2018-05-19 09:08:21
【问题描述】:
我分别运行两个 kafka 流应用程序,每个应用程序都在不同的 JVM 实例中,它们工作正常。一旦我在同一个 JVM 实例中运行应用程序,第二个应用程序就无法工作(既不消耗也不产生数据)。在同一个 JVM 实例中运行两个单独的应用程序是否有任何限制?卡夫卡消费者也会发生这种情况吗?
【问题讨论】:
标签: stream apache-kafka apache-kafka-streams
我分别运行两个 kafka 流应用程序,每个应用程序都在不同的 JVM 实例中,它们工作正常。一旦我在同一个 JVM 实例中运行应用程序,第二个应用程序就无法工作(既不消耗也不产生数据)。在同一个 JVM 实例中运行两个单独的应用程序是否有任何限制?卡夫卡消费者也会发生这种情况吗?
【问题讨论】:
标签: stream apache-kafka apache-kafka-streams
将多个KafkaStreams 实例放入同一个JVM 应该可以。但是在一个实例中增加线程数可能会更容易。
注意:您可以利用的所有实例的线程数受输入主题的输入分区数的限制(这不是很准确,但一个很好的经验法则)。您的输入主题中是否有足够的分区?您是否看到某些分区未分配给未处理的实例?
另请注意,Kafka Stream 每个线程并行化——这意味着,如果您有 2 个实例,每个实例有 2 个线程,并且只有 2 个输入主题分区,则可能会发生两个分区都分配给一个实例的两个线程,而另一个实例的两个线程空闲。在运行时,我们只“看到”线程,不知道它们是在相同还是不同的KafkaStreams 实例中运行。
【讨论】: