XXL-Job、Quartz、ShedLock、@Scheduled等技术对比
----------------------------------------------------------------------------------------------
SpringBoot 四大定时任务:@Scheduled、Quartz、XXL-Job、ShedLock 全网清晰对比
直接按单机 / 集群、持久化、运维难度、生产选型一次性讲明白
1. 各自一句话定位
- @Scheduled(Spring Task)
Spring 原生注解,纯内存单机定时,零依赖、最简单
- Quartz
老牌开源调度,数据库持久化 + 原生集群,qrtz 十几张表
- XXL-Job
分布式调度中台,可视化后台、分布式高可用、开箱即用,目前互联网首选
- ShedLock
轻量分布式锁,不做调度,只防集群重复执行,搭配 @Scheduled 用
2. 核心维度全方位对比表
表格
| 对比项 | @Scheduled | Quartz | XXL-Job | ShedLock |
|---|---|---|---|---|
| 存储 | 纯内存,无 DB | MySQL 持久化(qrtz_系列表) | MySQL 持久化 + 中心化调度 | Redis/DB 锁,无任务表 |
| 集群重复执行 | ❌ 多实例全部重复跑 | ✅ 集群 DB 锁,只执行一次 | ✅ 中心化调度,全局唯一 | ✅ 分布式锁,只一台执行 |
| 项目重启 | 错过任务直接丢失不补发 | ✅ 断点续跑、补发错过任务 | ✅ 历史记录、失败重试、补发 | ❌ 错过依旧不补发 |
| 动态修改 Cron | ❌ 改配置必须重启 | ✅ 数据库改触发器实时生效 | ✅ 后台页面改,无需重启 | ❌ 依旧要改代码 / 配置重启 |
| 可视化后台 | ❌ 无任何界面 | ❌ 原生无后台,自己开发 | ✅ 自带 WEB 管理、监控、日志 | ❌ 无后台 |
| 失败重试 | ❌ 无 | 有限支持 | ✅ 自定义重试次数、告警 | 不支持 |
| 阻塞问题 | 默认单线程,全部卡死 | 独立线程池 | 分布式分片、并行执行 | 共用 @Scheduled 线程池 |
| 分片广播任务 | ❌ 不支持 | 弱支持 | ✅ 超强分片、大数据批量处理 | ❌ 不支持 |
| 部署架构 | 单机内存 | 去中心化 DB 集群 | 中心化调度中心 + 执行器 | 去中心化,原生 @Scheduled 加锁 |
| 学习 & 接入成本 | 极低 | 中等,表多配置复杂 | 极低,五分钟接入 | 极低,几行注解搞定 |
| 运维成本 | 几乎无 | 高,表多难排查 | 极低,页面看所有日志 | 低 |
3. 逐个深度优缺点
① @Scheduled Spring 原生
优点:
- 零依赖、零配置、注解一行搞定
- 单机小任务极致简单
缺点:
- 集群必重复执行
- 重启丢失未执行任务
- 无监控、无告警、无重试
- 单线程阻塞所有任务
适用:单机项目、不重要后台清理、缓存刷新
② Quartz(qrtz_triggers 这套)
优点:
- 标准持久化调度,重启不丢任务
- 数据库集群天然防重复
- cron 表达式极强,日历、节假日都支持
缺点:
- 表超多(11 张 qrtz 表),臃肿难维护
- 没有后台,排查麻烦
- 分布式分片弱,大型业务不好用
- 配置繁琐,集群坑多
适用:传统政企、老项目、金融单机 / 小型集群严谨对账
③ XXL-Job (目前企业 90% 首选)
优点:
- 可视化管理后台:启停、改 cron、查看日志、失败告警
- 分布式高可用,调度中心集群
- 分片任务:大数据分批处理
- 失败重试、阻塞策略、过期补偿
- 不侵入业务,接入极简单
缺点:需要单独部署调度中心适用:微服务集群、线上重要业务、对账、报表、大数据定时、生产环境标配
④ ShedLock
本质:给 @Scheduled 加一把分布式锁
- 不改变原有 @Scheduled 写法
- Redis/MySQL 加锁,集群只有一台执行
- 轻量、无额外架构、不用新服务
缺点:
- 依旧是内存调度,重启错过任务不补发
- 没有后台、没有重试、没有分片
适用:不想换 XXL-Job,只想解决 @Scheduled 集群重复执行
4. 终极选型口诀(背这个就够)
- 单机小项目,随便跑跑 →
@Scheduled - 老系统 Quartz 表不想动 → 继续
Quartz - 微服务集群、线上重要定时、要后台监控 → XXL-Job
- 不想重构代码,只想防止多实例重复跑 →
@Scheduled + ShedLock
5. 一句话总结关系
@Scheduled:单机裸奔定时ShedLock:给裸奔加锁,解决重复执行,不解决重启丢失Quartz:数据库持久化严谨单机 / 小集群XXL-Job:分布式企业级全能调度,生产标准答案
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------

浙公网安备 33010602011771号