标准答案
- Job 的 completions、parallelism、backoffLimit 和 restartPolicy 共同定义任务完成与重试行为。
- CronJob 的并发策略可以允许、禁止或替换重叠任务,但不能解决业务执行已经开始后的副作用。
- 任务应保存执行记录、租约或幂等键,外部写入使用唯一约束或状态机保护。
- 长任务要处理 deadline、终止信号、checkpoint、重复投递和时区/夏令时。
题目解析
Job 控制 completions、parallelism、backoffLimit 和 Pod 重启语义,CronJob 再按时间创建 Job;控制器重试、节点中断、网络超时和进程在副作用之后退出,都可能让同一业务任务再次执行。concurrencyPolicy 主要限制 CronJob 创建的重叠 Job,不能撤销已经开始的副作用。
任务应以业务唯一键、数据库唯一约束、租约或状态机保护写入,并记录开始、完成、失败和恢复状态。长任务要处理 deadline、SIGTERM、checkpoint、时区/夏令时、补偿和告警,平台的重试次数只是调度边界,不是业务幂等保证。
常见误区
- 误区:设置 concurrencyPolicy=Forbid 就认为绝不重复。改正:在业务层使用幂等键、唯一约束或状态机,处理中断和重投递。
- 误区:任务失败只靠无限重启。改正:限制 backoff 和重试次数,区分可恢复错误与需要人工处理的数据错误。