几个优秀的调度器框架

103 阅读2分钟

比较常见的几款分布式定时调度器

对比项QuartZxxl-jobSchedulerX 2.0PowerJob
定时类型CRONCRONCRON、固定频率、固定延迟、OpenAPICRON、固定频率、固定延迟、OpenAPI
任务类型内置Java内置Java、GLUE Java、Shell、Python等脚本内置Java、外置Java(FatJar)、Shell、Python等脚本内置Java、外置Java(容器)、Shell、Python等脚本
分布式计算静态分片MapReduce动态分片MapReduce动态分片
在线任务治理不支持支持支持支持
日志白屏化不支持支持不支持支持
调度方式及性能基于数据库锁,有性能瓶颈基于数据库锁,有性能瓶颈不详无锁化设计,性能强劲无上限
报警监控邮件短信WebHook、邮件、钉钉与自定义扩展
系统依赖JDBC支持的关系型数据库(MySQL、Oracle...)MySQL人民币任意Spring Data Jpa支持的关系型数据库(MySQL、Oracle...)
DAG工作流不支持不支持支持支持
地址www.quartz-scheduler.orgwww.xuxueli.com/xxl-job/www.aliyun.com/aliware/sch…www.yuque.com/powerjob/gu…

spring 自带的定时器使用需要注意的地方

1.同一个服务里面的,执行的线程是同一个,需要不同的线程执行,则需要自定义执行线程池

@Bean
public TaskScheduler taskScheduler(){
    ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
    taskScheduler.setPoolSize(5);
    return taskScheduler;
}

其他参数自行配置

2.多个节点使用的时候,会造成重复执行,不适合在多个节点中使用,除非处理的业务不存在幂等的问题,比如从任务中心拉任务进行任务处理

3.在多线程环境下使用的时候,需要先使用一个有界的任务队列进行存储,任务队列大小需要控制好,然后再开多线程从任务队列中啦取任务进行处理