【发布时间】:2018-01-11 03:01:02
【问题描述】:
我有一个拥有 3 台机器的 kafka 集群。还有一个主题有 6 个分区(每台机器 2 个分区)。 当我启动一个有 6 个消费者线程并且属于一个组的消费者应用程序时。我知道一个消费者线程将被分配一个分区。 我想知道的是:消费者线程的任务会在分区所在的机器上运行吗?还是会在下载应用的机器上运行?
【问题讨论】:
标签: multithreading apache-kafka consumer
我有一个拥有 3 台机器的 kafka 集群。还有一个主题有 6 个分区(每台机器 2 个分区)。 当我启动一个有 6 个消费者线程并且属于一个组的消费者应用程序时。我知道一个消费者线程将被分配一个分区。 我想知道的是:消费者线程的任务会在分区所在的机器上运行吗?还是会在下载应用的机器上运行?
【问题讨论】:
标签: multithreading apache-kafka consumer
您所说的模型听起来像我们使用 Apache Spark 的模型,其中用于处理数据的工作线程在由开发人员/用户机器上的驱动程序应用程序协调的工作节点上运行。 卡夫卡不以这种方式工作。 Kafka 代理独立于消费者运行以从主题/分区获取消息的 Kafka 应用程序。 您启动消费者应用程序的位置,即运行应用程序的机器;它不在代理节点上运行。具有相关消费者的应用程序将连接到“远程”代理节点以获取消息。 您也可以像另一个 JVM 进程一样在代理节点上运行 Kafka 应用程序,但这不是您上面描述的模型(正如我所说的更像 Apache Spark)
【讨论】: