【问题标题】:Flink Stateful Functions 2.0 Multiple Calls During Asynchronous WaitFlink Stateful Functions 2.0 异步等待期间的多次调用
【发布时间】:2020-04-19 20:17:09
【问题描述】:

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

然后函数执行会暂停,直到调用完成并显示 Success、Failure 或 Unknown。未知的是:

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

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

  1. 然后被调用者是否等待被调用函数的处理 它的异步结果,以便第二次调用以干净的方式执行, 非共享的异步后状态?
  2. 或者第二次调用是否在 正常的时间表,因此在当前状态之上 异步调用,然后在异步调用完成时继续 使用异步调用时更新的状态进行处理 待处理?
  3. 或者呼叫可能算作被呼叫的“重新启动” 函数 - 在这种情况下,执行顺序是什么: “restart”运行,然后异步返回“restart”执行 从现在更新的状态,或者这个顺序被颠倒了?
  4. 还是别的什么?

【问题讨论】:

    标签: apache-flink flink-statefun


    【解决方案1】:

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

    将您的未来想象成一个临时功能,您可以发送消息,然后在收到结果时回复您。函数可以毫无问题地产生多个异步请求。无论哪个未来先完成,函数实例都会首先处理,不一定是它们产生的顺序。

    【讨论】:

      猜你喜欢
      • 2021-09-30
      • 1970-01-01
      • 2013-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多