【发布时间】:2018-01-24 14:52:33
【问题描述】:
这是上下文:
- 有一个输入事件流,
- 有一些方法可以应用于 流,它应用不同的逻辑来评估每个事件, 说这是“好”或“坏”事件。
- 一个事件可以是一个真正的“好”事件只有当它通过所有方法,否则它是一个“坏”事件。
- 有一个输出事件流具有事件的结果及其事件ID。
为了解决这个问题,我有两个想法:
- 我们可以将每种方法依次应用于每个事件。 但是这是一种批处理,没有应用流处理的优点,同时需要Time(M(ethod)1) + Time(M2) + Time(M3) + .....,可能不适合实时处理。
-
我们可以将输入流传递给每个方法,然后我们可以并行运行每个方法,每个方法保存坏事件到永久存储中,然后Main 方法可以查询永久存储以获取每个事件的结果。 但是这有一些问题需要解决:
如何在编程语言(例如 Scala)中并行执行方法,性能如何(网络、CPU、内存)
如何解决同步问题?可以肯定的是,这些方法需要一些时间来计算flag并将其保存到永久存储中,但是Main需要更少的时间来查询flag,这会出现延迟问题。
- 等
这不是技术和设计的问题,我想问问你们的想法,如果你有一些新的想法或想法来解决这个问题?期待您的意见。
【问题讨论】:
-
按顺序执行 (#1)。如果时间成为问题,您始终可以对流进行分区,并并行处理事件。
-
@Dima 有链接让我看懂吗?
-
不知道你想了解什么
标签: scala parallel-processing apache-flink flink-streaming