背景
定时任务可能延迟、重复执行,也可能在上一轮尚未结束时开始下一轮。任务逻辑需要能处理这些调度现实。
核心判断
- CronJob 层设置并发与错过调度的策略。
- Job 层设置重试与执行期限,两种预算分别计算。
- 业务使用幂等键与持久化进度,重复调度不重复副作用。
最小示例
下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。
# 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 的全局互斥。
验证方式
人为延长一次执行,观察下次触发、失败重试与超时终止;模拟控制面不可用后恢复,确认遗漏任务的补偿策略明确。
小结
任务本身做幂等,设置并发策略、截止时间、重试和业务执行记录。