设计方案

分布式定时任务调度中心

2020-01-08  本文已影响0人  晚歌歌

背景

刚进公司时候就觉得公司的定时任务模块做的非常LOW,因为我之前公司用的是XXL-JOB,所以对比起来虽然是基于QUARTZ,但仍有很多不方便的点。
1、后台管理界面仅仅有定时任务的配置详情,手动触发、启动、停止的功能都没有做,假如某次任务失败了并且没有重试机制,如果想要重新执行,只能把CRON表达式改成即将到达的时间,然后等待重新触发后再改回原CRON表达式。
2、定时任务的加载机制是:利用写死一个定时任务,每5分钟扫描定时任务配置表,对比如果有新增的任务,则新增JOBDETAIL和CRONTRIGGER加入调度器;如果原任务有表达式改变,则调用rescheduleJob。这个应该说不上什么问题,但如果可以使用后台界面来新增修改删除配合QUARTZ集群的话应该就用不上这个定时任务了。
3、定时任务执行日志及报警:自己实现定时任务执行情况,执行失败自己实现报警,执行日志也只能到服务器上查运行日志
4、开发效率:代码耦合性高,开发一个定时任务需要配置一堆XML映射关系

分布式定时任务调度中心选型

目前主流的开源分布式定时任务调度中心据我了解主要是XXL-JOB和ELASTIC-JOB,我之前公司用的就是XXL-JOB。

对比的话直接网上找一张图


image.png

以上框架实现的功能大体都差不多,下面说下我选择XXL-JOB的原因:
1、轻量级,支持通过Web页面对任务进行动态CRUD操作,操作简单,一分钟上手,这点应该都差不多
2、只依赖数据库作为集群注册中心,接入开发简单,不需要ZK
3、高可用、解耦、高性能、监控报警、分片、重试、故障转移
4、团队持续开发,社区活跃
5、支持后台直接查看每个任务执行实时日志,这点是我个人比较喜欢的,ELASTIC-JOB中应该是没有这个功能


image.png
上一篇下一篇

猜你喜欢

热点阅读