Apache flink Apache Flink有状态函数将同一消息转发给N个函数

Apache flink Apache Flink有状态函数将同一消息转发给N个函数,apache-flink,fault-tolerance,flink-statefun,Apache Flink,Fault Tolerance,Flink Statefun,我试图将传入消息发送到多个有状态函数,但我无法完全理解如何执行。为了便于理解,让我们假设我的一个有状态函数得到一些整数,并将它们发送给两个远程函数。这些函数将这些整数添加到它们的状态值中​​并将其保存为新状态 当这两个远程功能中的一个出现故障时,另一个应继续以相同的方式工作。 当故障函数恢复时,它应该处理在故障期间无法处理的消息 我曾想过像下面这样一个接一个地发送它们,但我认为这行不通 context.send(RemoteFuncType1,someID,someInteger); conte

我试图将传入消息发送到多个有状态函数,但我无法完全理解如何执行。为了便于理解,让我们假设我的一个有状态函数得到一些整数,并将它们发送给两个远程函数。这些函数将这些整数添加到它们的状态值中​​并将其保存为新状态

当这两个远程功能中的一个出现故障时,另一个应继续以相同的方式工作。 当故障函数恢复时,它应该处理在故障期间无法处理的消息

我曾想过像下面这样一个接一个地发送它们,但我认为这行不通

context.send(RemoteFuncType1,someID,someInteger);
context.send(RemoteFuncType2,someID,someInteger);
...
  • 如何以容错方式执行此操作
  • 如果可能,它在后台是如何工作的

    • 您建议的方法是正确的

      StateFun将以一致的方式向远程功能传递消息。如果其中一个功能出现短暂停机,StateFun将重试发送消息,直到:

      • 它将成功地交付(退出)
      • 将达到重试的最大超时。当达到超时时,整个StateFun作业将回放到 以前一致的检查点
      由于StateFun管理消息传递和函数状态(包括远程),因此它将确保向每个函数传递一致的状态和消息。 在您的示例中:一旦恢复,第二个远程函数将接收具有以前任何状态的someInteger

      为了更深入地了解Flink中检查点的工作原理以及它如何实现一次处理,我建议如下:


      你建议的方法是正确的

      StateFun将以一致的方式向远程功能传递消息。如果其中一个功能出现短暂停机,StateFun将重试发送消息,直到:

      • 它将成功地交付(退出)
      • 将达到重试的最大超时。当达到超时时,整个StateFun作业将回放到 以前一致的检查点
      由于StateFun管理消息传递和函数状态(包括远程),因此它将确保向每个函数传递一致的状态和消息。 在您的示例中:一旦恢复,第二个远程函数将接收具有以前任何状态的someInteger

      为了更深入地了解Flink中检查点的工作原理以及它如何实现一次处理,我建议如下:


      对于订单事项情况,恢复的远程控制功能是否按顺序接收整数?是,消息将按FIFO顺序发送。对于订单事项情况,恢复的远程控制功能是否按顺序接收整数?是,消息将按FIFO顺序发送。