Flink有状态函数2.0异步等待期间的多个调用

时间:2020-04-19 20:17:09

标签: apache-flink flink-statefun

Flink有状态函数2.0能够进行异步调用,例如,对外部API的调用: [https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.0/sdk/java.html#completing-async-requests][1]

然后,函数执行将暂停,直到调用成功,失败或未知完成。未知:

有状态功能已重新启动,可能在另一台计算机上, 在CompletableFuture完成之前,因此未知 异步操作的状态是什么。

第二次调用具有相同ID的暂停/等待功能时会发生什么?

  1. 被调用方是否等待被调用函数对 它的异步结果,以便第二个调用以干净的方式执行, 非共享的异步后状态?
  2. 第二个调用是否在 正常的时间表,因此是截至目前的最新状态 异步调用,然后在异步调用完成时继续 使用异步调用被更新时的状态进行处理 等待中?
  3. 或者该呼叫算作被叫的“重新启动” 函数-在这种情况下执行的顺序是: 运行“重新启动”,然后异步返回“重新启动”以执行 从现在更新的状态开始,还是此顺序相反?
  4. 还是其他?

1 个答案:

答案 0 :(得分:2)

在异步请求完成时,功能执行不会暂停。该ID的实例将继续处理消息,直到请求完成。这意味着状态会在未来运行时发生变化。

将您的未来视为一个临时功能,您可以先发送消息,然后在收到结果后再发送消息。函数可以产生多个异步请求而不会出现问题。无论哪个先完成,都将首先由函数实例处理,而不必按其生成的顺序进行。