kafka 中的 b/w group.id、application.id 和 client.id 有什么区别?

Sag*_*gar 6 apache-kafka apache-kafka-streams

我是 kafka 的新手,所以我只是在清除我的 kafka 概念。

我创建了一个简单的流应用程序,它从具有两个分区的单个主题流式传输数据。我有这个应用程序的两个实例(我是根据两个项目中相同的 application.id 说的)。当我启动应用程序的第三个实例时,出现错误。由此,我了解到 kafka 中的 application.id 被视为消费者组 ID,其中单个消费者可以从主题的单个分区读取,而第三个消费者没有得到任何内容,因此无法针对该主题获取存储。

我还尝试了另一种场景,我在其中一个应用程序中更改了 application.id。因此,通过这样做,应用程序的第三个实例也开始正常工作。所以它证实了我的假设 application.id 被视为消费者组 ID。

但我也注意到 group.id, client.id 也存在那里,这让我很困惑。在我们的项目中使用 group.id、client.id 的目的是什么,这些属性是什么以及它们是如何工作的。我为所有三个应用程序设置了相同的组 ID。

Mic*_*oll 17

简而言之:

  • client.id(对于生产者消费者)设置单个 Kafka 生产者或消费者客户端的名称。
  • group.id设置单个 Kafka 消费者客户端所属的 Kafka消费者的名称。
  • application.id是仅由 Kafka Streams 用于命名应用程序的设置,即使用 Kafka Streams 库(可以在一个或多个应用程序实例上运行)的应用程序。在幕后, theapplication.id也用于生成group.idclient.ids。有关更多信息,请参阅application.id文档。

  • 如果application.id也用于设置group.id,那么为什么需要单独为应用程序定义group.id以及如何与application.id区别对待? (2认同)
  • 配置 Kafka Streams 应用程序时,只需设置“application.id”。Kafka Streams 将根据需要自动配置“group.id”和“client.id”。 (2认同)