我如何等待处理风暴中卡夫卡主题/流的元组

时间:2017-08-07 06:20:21

标签: apache-kafka apache-storm

流媒体处理的超级新手。试图看看Core Storm中是否可能,或者可能是Trident。如果重要的话,基础流是Kafka主题,因此它们可靠,甚至可重放。

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

A := (id, timestamp, v)
B := (id, timestamp, w)

我假设A和B都是按时间戳递增的顺序。

我假设Bolt读A和B(虽然我对其他解决方案持开放态度)。

WLOG,对于给定的元组" a"从A来处理它我需要有一个相应的元组" b"来自B,B遇到的第一个元组:

a.id == b.id
b.timestamp >= a.timestamp

(因此,假设我们一次只在一个Bolt中获得这些事件,当它正在处理" a"时,相应的" b"可能已经出现在过去;或者可能以毫秒,月,甚至从未出现过。)

对于任何给定的id,我不介意等待几毫秒,几个月甚至是永恒,以传递一些修改版本的" a"我的Storm拓扑中的事件。但是,我希望在出现所有相关信息后尽快发出此类修改过的事件,并以所有常用的实用工程方式使整个设置具有可扩展性和冗余性。

我怎样才能在Storm中最好地实现这一点?

我曾经有过天真的想法:

  1. 继续没有回复任何" a"没有相应的" b"然而,反之亦然。
  2. 排队" a"和" b"在bolt内存中设置样式元组,直到可以找到相互事件,并根据需要保存Bolt状态。
  3. 发出问题" a"和" b"对某些其他流或流进行元组,并以某种方式延迟对这些元组的进一步处理,直到出现来自相应id的倒数流的事件。

0 个答案:

没有答案