我正在使用英雄。我的拓扑结构如下:
Spout1 -> Bolt1 -> Bolt2
Spout2 ---------> Bolt2
因此,Bolt2 需要来自 Spout2 和 Bolt1 的信息才能发出结果,但是来自 Spout2 的信息比来自 Bolt1 的信息来得快,并且 Bolt2 必须等到如果同时具有 Spout2 和 Bolt1 信息。如何使用 Heron API 同步信息流,以便 Bolt2 仅在所有可用信息之后才发出结果?
通常,流式传输中不能保证顺序/同步。我觉得 spout1 和 spout2 本身很难 100% 同步。
我认为您可能会考虑一个选项:将 bolt1 连接到 spout2 并直接从 spout2 发出元组,将 bolt2 与 spout2 断开连接。因此,bolt1 成为排序的真实来源。
开窗可能是另一种选择,但它需要更多的考虑和工作。
Heron 不会自动同步来自不同组件的元组。因此,您需要缓冲来自 Spout2 的元组并等待来自 Bolt1 的相应元组到达,然后进行计算。