背景

定时任务可能延迟、重复执行,也可能在上一轮尚未结束时开始下一轮。任务逻辑需要能处理这些调度现实。

核心判断

  1. CronJob 层设置并发与错过调度的策略。
  2. Job 层设置重试与执行期限,两种预算分别计算。
  3. 业务使用幂等键与持久化进度,重复调度不重复副作用。

最小示例

下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。

# CronJob spec 片段,仍需补充容器镜像、命令和 restartPolicy。
schedule: "*/10 * * * *"
concurrencyPolicy: Forbid
startingDeadlineSeconds: 600
jobTemplate:
  spec:
    backoffLimit: 3
    activeDeadlineSeconds: 1800

边界与误区

concurrencyPolicy 和 startingDeadlineSeconds 在 CronJob spec;backoffLimit 与 activeDeadlineSeconds 属于 jobTemplate.spec。Forbid 不代替跨 CronJob 的全局互斥。

验证方式

人为延长一次执行,观察下次触发、失败重试与超时终止;模拟控制面不可用后恢复,确认遗漏任务的补偿策略明确。

小结

任务本身做幂等,设置并发策略、截止时间、重试和业务执行记录。