Apache Flink:使用来自外部/阻塞调用的数据来丰富流

时间:2016-06-16 08:56:30

标签: apache-flink flink-streaming

在我的应用程序中,我希望丰富无限的事件流。流本身通过Id的散列来并行化。对于每个事件,可能会调用外部源(例如REST,DB)。此呼叫本质上是阻止的。必须维护一个流分区中的事件顺序。

我的想法是创建一个RichMapFunction,它设置连接,然后轮询每个事件的外部源。阻塞调用通常不会很长,但在最坏的情况下,服务可能会停止。

从理论上讲,这是有效的,但我这样做并不好,因为我不知道如果你在流中有一些阻塞操作,Flink会如何反应。如果你有很多并行流阻塞会发生什么,即我的线程用完了?或者,如何在流并行化的点上向上流动?

其他人是否可能遇到类似问题并回答我的问题或某些想法如何解决?

1 个答案:

答案 0 :(得分:2)

RichMapFunction是一个很好的起点,但更喜欢RichAsyncFunction这是异步的,并且不会阻止您的处理!

小心:
1-您的数据库访问,但也是异步的 2-您的活动顺序可能会发生变化(根据使用的模式)

更多详情:https://ci.apache.org/projects/flink/flink-docs-release-1.2/dev/stream/asyncio.html

希望有所帮助