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

问题描述 投票:0回答:1

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. 或其他?
apache-flink
1个回答
2
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.