本文只比较“什么时候触发任务”的原生和云端调度器,不讨论应用内任务队列、业务工作流、脚本管理平台和漏跑告警。
方案对比
| 项目 | 类型 | 适合场景 | 主要代价 |
|---|---|---|---|
| cron / crontab | Unix 原生定时器 | 最简单的单机脚本和周期任务 | 可观测性、依赖和并发控制需要自行补齐 |
| systemd Timer | Linux 原生定时器 | 服务启动、备份、清理和维护脚本 | Linux 专属,没有多节点调度 UI |
| launchd | macOS 原生任务管理 | macOS 后台任务、定时脚本和服务 | 配置模型与 cron 不同,跨平台性弱 |
| Windows Task Scheduler | Windows 原生任务调度 | Windows 服务、脚本和维护任务 | Windows 专属,跨主机编排能力有限 |
| Kubernetes CronJob | Kubernetes 原生批任务 | 集群里的容器化批任务 | 依赖 Kubernetes,不是完整工作流 |
| pg_cron | PostgreSQL 扩展 | SQL、物化视图和数据库维护 | 任务绑定 PostgreSQL 生命周期 |
| Amazon EventBridge Scheduler | 云端托管调度器 | AWS API、消息和任务的定时触发 | 绑定 AWS 权限和区域模型 |
| Google Cloud Scheduler | 云端托管调度器 | HTTP、Pub/Sub 和 App Engine 定时触发 | 绑定 Google Cloud 权限和区域模型 |
单机 Linux 优先 systemd Timer;只执行 SQL 看 pg_cron;集群任务看 Kubernetes CronJob;只触发云服务时比较 EventBridge Scheduler 和 Cloud Scheduler。任务的失败、超时和漏跑需要另外接入定时任务监控方案对比。