0

我是 flink 新手,正在寻找有关构建实时事件关联系统的建议。我有两个主要用例:

  1. 事件关联逻辑由基于输入流中事件类型的静态规则组成。在最后 X 分钟内,根据这些规则关联不同事件类型的事件和具有业务价值的事件的输出数据。例如,在最后 1 分钟内,检查市场 A1 中事件类型 A 的价格是否 < 20,000,市场 M2 中事件类型 B 的价格是否小于 < 30,000,然后将事件 A 的数据添加到输出流,否则添加事件数据B.
  2. 对于感兴趣/商业价值的事件,计算与最后 X 分钟的价格差异。例如,如果在应用所有规则后,我们决定事件 A 对最后 1 分钟窗口感兴趣,在将事件数据添加到输出流中之前,我们还想计算事件 A 与过去 10 分钟的价格差异。

为了实现这些用例,我正在通过输入数据中的产品类型 ID 在输入流上评估应用键。这将为我提供该产品针对不同市场的多种事件类型的数据,然后使用回溯期的滑动事件时间窗口,例如最后 10 分钟,滑动窗口为 1 分钟,并应用 ProcessWindowFunction 为最后 1 分钟的数据编写相关逻辑和使用其他 9 分钟的数据进行回顾并计算感兴趣事件的价格差异。

我不完全确定这是否是实现这些的最佳方式。任何提示/建议将不胜感激!

4

1 回答 1

1

总的来说,我会说你的选择是:

  • 正如您所建议的那样,使用滑动窗口。
  • 使用KeyedProcessFunction. 这个较低级别的 API 提供了更多的控制,并可能导致更好的优化解决方案。有时这也更简单,所以如果您发现窗口 API 妨碍您,请考虑这一点。
  • 使用 Flink SQL 和/或 Table API。如果规则是用 SQL 编写的,您可能会发现更容易表达和维护规则。也许MATCH_RECOGNIZE是相关的。
于 2021-03-18T10:01:03.547 回答