XXLJOB基础介绍!
XXLJOB基础介绍!
月伴飞鱼
XXL-JOB
是一个分布式定时任务调度平台。分布式定时任务:
- 指的是运行在分布式集群环境下的调度任务,同一份定时任务部署多份,则同一时刻应当只允许一个定时任务执行。
源码仓库地址:
官方文档:
Crontab
在线工具:
Cron表达式
Cron表达式是一个字符串,以 5 或 6 个空格隔开,分为 6 或 7 个域,每一个域代表一个含义。
[秒] [分] [时] [日期] [月] [星期]
[秒] [分] [时] [日期] [月] [星期] [年]
*:表示任何时间触发任务
,:表示指定的时间触发任务
-:表示一段时间内触发任务
/:表示从哪一个时刻开始,每隔多长时间触发一次任务
?:表示用于月中的天和周中的天两个子表达式,表示不指定值
如:
0 30 8 * * ?
表示每天早上8点半
常见问题
并发大导致任务丢失:
当大量任务并发的时候,任务会丢失。
解决方案
可以通过动态更新线程池的方式,调大整个线程池的缓冲区数量,其次可以重写拒绝策略。
- 当超过最大缓存数量的时候,先往数据库塞,然后当有空间的时候慢慢的读出然后删除待执行的记录。
服务宕机导致任务丢失:
当任务的那台服务器宕机之后,任务也会被中断,任务丢失会导致部分数据丢失。
解决方案
业务端去缓存这个拉取的时间,比如说上次拉取是什么时候,如果中间有段丢失了。
- 那我们下次任务就从上次丢失的地方开始拉数据,这样就补齐了。
Kill
任务导致部分数据问题:
Kill
任务的时候,有些数据是无法回滚的,会给修复数据带来麻烦。
分布式定时任务调度的框架对比
功能 | quartz | elastic-job | xxl-job |
---|---|---|---|
HA(高可用) | 多节点部署,通过数据库锁来保证只有一个节点执行任务 | 通过zookeeper的注册和发现,可以动态添加服务器,支持水平扩容 | 集群部署 |
任务分片 | 不支持 | 支持 | 支持 |
文档完善 | 完善 | 完善 | 完善 |
管理界面 | 没有 | 有 | 有 |
难易程度 | 简单 | 较复杂 | 简单 |
公司 | OpenSymphony | 当当网 | 个人 |
缺点 | 没有管理界面不支持任务分片,不适用于分布式场景 | 需要引入zookeeper,增加系统复杂度,比较复杂 | 通过获取数据库锁的方式,保证集群中执行任务的唯一性,性能不好 |