Flink 异步 IO 操作符与另一个同步操作符链接

Flink async IO operator chaining with with another sync operator

我有一个用例,我在 flink 中使用带有法线映射器的异步 IO 运算符。我正在使用 flink 1.8。因此,异步运算符将必须位于运算符链的头部。所以我的操作流程是这样的:

Source -> Mapper1 -> AsyncOperator -> Mapper2 -> Sink

因为要求async operator 是head,所以有两个operator 链,因此有两个任务- 1. Source + Mapper1 2. AsyncOperator+Mapper2+Sink。 我对第二条链有疑问。我认为如果链接正确,第二个链应该包含在一个任务中。我不确定任务线程上的异步运算符和映射器 2 之间是否有等待时间,或者 Mapper2 在内部绑定到异步运算符的响应处理程序?理想情况下,它应该是第二个,但我找不到任何相同的文档 - 因此想知道。

参考:

  1. https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/operators/asyncio.html

AsyncWaitOperator 在一个线程中启动一个 Emitter,因此一旦结果可用,它们就会被发送到操作员的收集器。请注意,如果您指定有序结果,则可能会出现“等待时间”,因为完成顺序与传入元素的顺序不匹配。

顺便说一句,AsyncWaitOperator 必须在链头的限制在 Flink 1.11 中被取消了。参见 FLINK-16219。唯一剩下的限制是它不能跟随 SourceFunction。 AsyncWaitOperator 可以遵循 Flink 1.12 引入的新源。