Apache kafka 我怎么能等着在暴风雨中处理卡夫卡主题/流中的元组呢

Apache kafka 我怎么能等着在暴风雨中处理卡夫卡主题/流中的元组呢,apache-kafka,apache-storm,Apache Kafka,Apache Storm,超级新的流处理。试图看看这是否可能在核心风暴,或可能三叉戟。如果重要的话,底层流是卡夫卡主题,因此它们是可靠的,甚至是可重复播放的 从概念上讲,我有两条流,A和B: A := (id, timestamp, v) B := (id, timestamp, w) 我假设A和B都是按时间戳升序排列的 我假设一个螺栓同时读取a和B(尽管我对其他解决方案持开放态度) WLOG,对于来自a的给定元组“a”,要处理它,我需要有来自b的对应元组“b”,从b遇到的第一个元组如下: a.id == b.id b

超级新的流处理。试图看看这是否可能在核心风暴,或可能三叉戟。如果重要的话,底层流是卡夫卡主题,因此它们是可靠的,甚至是可重复播放的

从概念上讲,我有两条流,A和B:

A := (id, timestamp, v)
B := (id, timestamp, w)
我假设A和B都是按时间戳升序排列的

我假设一个螺栓同时读取a和B(尽管我对其他解决方案持开放态度)

WLOG,对于来自a的给定元组“a”,要处理它,我需要有来自b的对应元组“b”,从b遇到的第一个元组如下:

a.id == b.id
b.timestamp >= a.timestamp
(因此,假设我们一次只在螺栓中获取一个事件,当螺栓处理“a”时,相应的“b”可能在过去已经出现;或者可能在毫秒、月甚至从未出现过。)

对于任何给定的id,我都不介意等待几毫秒、几个月甚至是永远,以便在我的Storm拓扑中传递“a”事件的某些修改版本。然而,我确实希望在所有相关信息出现后尽快发出此类修改事件,并以所有常用的实用工程方式使整个设置具有可伸缩性和冗余性

如何在暴风雨中最好地实现这一点

我曾经有过天真的想法:

  • 继续未能确认任何还没有相应“b”的“a”,反之亦然
  • 将“a”和“b”样式的元组在螺栓内存中排队,直到可以找到交互事件,并根据需要保存螺栓状态
  • 将问题“a”和“b”元组发送到某个或多个其他流,并以某种方式延迟对这些元组的进一步处理,直到出现来自相应id的交互流的事件为止