流媒体处理的超级新手。试图看看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中最好地实现这一点?
我曾经有过天真的想法: