【发布时间】:2018-03-08 23:32:11
【问题描述】:
我似乎无法很好地解释如果多个工作人员听同一个 AWS 步进函数活动 ARN 会发生什么? 我主要对机制感兴趣,因为我正在探索如何将容错引入到侦听步骤函数活动的流程中,这意味着如果一个工作人员失败了,另一个工作人员如何从活动任务中弥补不足?
如果有已定义的模式 - 请分享:-)
谢谢!
【问题讨论】:
我似乎无法很好地解释如果多个工作人员听同一个 AWS 步进函数活动 ARN 会发生什么? 我主要对机制感兴趣,因为我正在探索如何将容错引入到侦听步骤函数活动的流程中,这意味着如果一个工作人员失败了,另一个工作人员如何从活动任务中弥补不足?
如果有已定义的模式 - 请分享:-)
谢谢!
【问题讨论】:
在另一次对话中,我想我已经找到了这个问题的答案:
如果两个不同的 AZ 中有两个工作人员在侦听同一个活动 ARN,并且其中一个 AZ 在该 AZ 中的工作人员能够获取 taskToken 之前出现故障,其他工作人员可以拿起它并开始工作在任务上。
在另一种情况下,如果 AZ1 中的工作人员选择了工作并且 AZ1 出现故障 - 该步骤最终将超时,但重试该步骤可能会强制 AZ2 中的工作人员选择工作。
从某种意义上说,step function 活动是一个任务队列。
【讨论】:
在您的工作人员中实现心跳,以便如果工作人员失败,它将被活动任务知道并允许另一个工作人员抓住它。
具有长时间运行活动的状态应提供心跳超时值以验证活动是否仍在成功运行。
您可以向任务发送心跳更新。
如果您的活动具有心跳超时值,则实现它的工作人员必须向 Step Functions 发送心跳更新。要从工作人员发送心跳通知,请使用 SendTaskHeartbeat 操作。
如果此任务未能在其时间间隔(如果指定)内完成,或者未在定义的时间间隔内发送检测信号通知,则该任务被标记为失败。您可以定义重试策略以再次尝试。
有关更多信息,请参阅 AWS 文档中的 SendTaskHeartbeat 部分。
【讨论】: