使用 onTimer 和 processElement 的 Apache Flink 超时

Apache Flink timeout using onTimer and processElement

我正在使用 Apache Flink processElement1、processElement2 和 onTimer 流设计模式来实现超时用例。我观察到当我包含超时功能时,系统的吞吐量下降了几个数量级。

关于 Flink 中 onTimer 内部实现的任何提示:是每个密钥流一个线程(不太可能),还是一个 pool/single 执行线程不断轮询缓冲回调并获取超时回调执行。

据我所知,Flink 基于 actor 模型和反应模式 (AKKA),它鼓励明智地使用少数非阻塞线程,因此每个键流一个线程用于 onTimer 或任何其他模式通常不使用!

Flink中有两种定时器,事件时间定时器和处理时间定时器。实现方式完全不同,但在任何一种情况下您都不应该看到显着的性能影响。一定有别的事情发生了。你能分享一个小的、可重现的例子吗,或者至少向我们展示更多正在发生的事情以及你是如何进行测量的?