Cadence集群宕机时应启动的CronWorkflows运行行为咨询
Cadence CronWorkflow宕机恢复后的触发规则
默认配置下,错过原定启动时点的CronWorkflow不会自动补触发宕机期间漏掉的运行任务,具体逻辑和可配置规则如下:
核心调度机制
Cadence的CronWorkflow没有采用独立外部定时触发器到点硬推任务的实现,调度逻辑完全内嵌在工作流的生命周期流转中:
- 首次创建CronWorkflow时,服务端会持久化存储cron表达式、首次启动时间、调度策略配置
- 单次工作流执行完成(包括成功、失败后按策略终止)后,服务端会根据cron规则计算下一个调度时点,自动生成下一次工作流执行实例
- 集群重启恢复后,会扫描所有存活的CronWorkflow元数据,基于当前时间、上次执行记录、cron规则计算后续调度节点,不会主动回溯已经过期很久的时间点补跑任务
可配置的补跑规则
如果需要覆盖默认的“不补跑”逻辑,可以在创建CronWorkflow时设置CatchupWindow(补跑窗口)参数,时间单位按所用SDK的配置规范传入即可:
- 当集群宕机时长小于配置的
CatchupWindow值时,集群恢复后会自动补触发错过的那次运行 - 当集群宕机时长超过配置的
CatchupWindow值时,不会补跑过期任务,直接计算当前时间之后的下一个合法调度时点继续后续调度 - 该参数默认值为0,也就是默认关闭补跑能力,完全不触发错过的历史任务
场景示例:配置了每小时整点执行的CronWorkflow,设置
CatchupWindow为15分钟
- 8点整集群宕机,8点10分恢复:宕机时长小于15分钟,恢复后立刻补跑8点的任务,后续仍按9点、10点的时点正常调度
- 8点整集群宕机,8点30分恢复:宕机时长超过15分钟,8点的任务不会补跑,直接等待9点的下一次调度
内容的提问来源于stack exchange,提问作者Sharan Foga
相关产品推荐
相关产品推荐

