首页 > 解决方案 > Kafka - 当数据在不同时间出现时从两个不同的流中加入数据

问题描述

我有一个场景,我们有两个不同的流,我们在两个不同的时间获取它们的数据,我需要根据值中的时间戳加入它们。我将尝试通过以下示例进行解释。

输入流1->

输入流2->

输出加入我需要的 ->

注意:两个流在不同时间获取输入。当 inputStream1 的第一条记录到达时,inputStream2 可能有所有 5 条记录。我想在值中的时间窗口上匹配它们。

我怎样才能在kafka中实现这一点。甚至可能吗?

点击查看图片

标签: apache-kafkaapache-kafka-streamskafka-join

解决方案


仅使用卡夫卡,这将是非常困难的,几乎是不可能的。从理论上讲,您可以拥有一个从两个队列中读取的单例服务器,并通过从每个队列中读取足够多的内容来进行相关性,以便它在内存中具有相互匹配的记录。

如果您只希望在给定的时间窗口内关联数据,一些 Kafka 客户端库将在一个时间窗口内读取消息,因此您可以使用它。但是,从您的数据示例看来,除非您的时间戳只是消息到达时,否则情况可能会或可能不会。

但是,除非两个队列都以相同的方式分区,否则一旦您需要扩展到第二个实例,这一切都会崩溃。

或者,您写入中间数据存储以存储来自队列的数据并针对该数据进行查找。


推荐阅读