Apache kafka 我们通过使用consumer group的多个消费者从代理读取数据,但是如何组合消费数据呢?

Apache kafka 我们通过使用consumer group的多个消费者从代理读取数据,但是如何组合消费数据呢?,apache-kafka,kafka-consumer-api,consumer,Apache Kafka,Kafka Consumer Api,Consumer,我需要kafka brokers提供的数据,但为了快速访问,我使用了多个具有相同组id的消费者,称为消费者组。但在每个消费者阅读后,我们如何组合来自多个消费者的数据?有什么逻辑吗 根据设计,同一消费者群体中的不同消费者相互独立地处理数据。(这种行为使应用程序能够很好地扩展。) 但在每个消费者阅读之后,我们如何组合来自多个消费者的数据?有什么逻辑吗 当您使用卡夫卡的“消费者API”(也称为“消费者客户端”库)时,简短但略为简化的答案,我认为这是您根据问题的措辞使用的答案:如果您需要合并来自多个消费

我需要kafka brokers提供的数据,但为了快速访问,我使用了多个具有相同组id的消费者,称为消费者组。但在每个消费者阅读后,我们如何组合来自多个消费者的数据?有什么逻辑吗

根据设计,同一消费者群体中的不同消费者相互独立地处理数据。(这种行为使应用程序能够很好地扩展。)

但在每个消费者阅读之后,我们如何组合来自多个消费者的数据?有什么逻辑吗

当您使用卡夫卡的“消费者API”(也称为“消费者客户端”库)时,简短但略为简化的答案,我认为这是您根据问题的措辞使用的答案:如果您需要合并来自多个消费者的数据,最简单的选择是在另一个卡夫卡主题中提供此(新)输入数据,在随后的处理步骤中进行合并。一个简单的例子是:另一个,第二个卡夫卡主题将被设置为只有一个分区,因此任何后续处理步骤都将看到所有需要合并的数据


如果这听起来有点太复杂,我建议使用Kafka的Streams API,这样可以更容易地定义此类处理流(如您的问题中的连接或聚合)。换句话说,Kafka Streams为您提供了许多您想要的内置“逻辑”:

Kafka的目标是为您提供一个可扩展、高性能和容错的框架。让一组使用者异步读取来自不同分区的数据可以让您归档前两个目标。数据的分组有点超出了标准Kafka流的范围-在最简单的情况下,您可以使用单个使用者实现单个分区,但我确信这不是您想要的

对于来自不同消费者的单一状态的聚合,我建议您应用一些专门为此类目标设计的解决方案。如果您使用的是Hadoop,那么可以使用Storm,它允许您聚合来自Kafka喷口的数据。或者你可以使用Spark流媒体,这将允许你做同样的事情,但在一个有点不同的方式。或者,作为一个选项,您可以始终使用标准Kafka库实现具有此类逻辑的自定义组件