定时任务是软件开发中必不可少的中间件。
    分布式定时任务可以解决分布式下,多主机,多应用,大数据量的处理问题。

    常用的分布式框架或工具有:

    • ElasticJob: 当当网的,2020年成为Apache项目,特点是弹性伸缩,超大规模数据也能应对。
    • Saturn:唯品会的,Saturn是在当当开源的Elastic Job基础上,结合各方需求和我们的实践见解改良而成,怎么说呢,改良了总比不改的好用些。
    • xxl-job:个人开源项目,但是:简单,功能齐全,好用!比ElasticJob使用要简单。
    • PowerJob:阿里工程师开源项目,功能齐全,使用简单,推荐!跟xxl-job一样简单,但功能上更齐全。
    • SchedulerX :阿里云的,按量付费,稳定,省事,超大规模数据仍可以使用,优点是省事简单,缺点是花钱。不开源,不免费!

    目前我个人推荐PowerJob,使用简单,功能齐全,工程成本低。PowerJob作者自己对各个框架的对比如下:

    QuartZ xxl-job SchedulerX 2.0 **PowerJob
    定时类型 CRON CRON CRON、固定频率、固定延迟、OpenAPI CRON、固定频率、固定延迟、OpenAPI
    任务类型 内置Java 内置Java、GLUE Java、Shell、Python等脚本 内置Java、外置Java(FatJar)、Shell、Python等脚本 内置Java、外置Java(容器)、Shell、Python等脚本
    分布式任务 无 静态分片 MapReduce动态分片 MapReduce动态分片
    在线任务治理 不支持 支持 支持 支持
    日志白屏化 不支持 支持 不支持 支持
    调度方式及性能 基于数据库锁,有性能瓶颈 基于数据库锁,有性能瓶颈 不详 无锁化设计,性能强劲无上限
    报警监控 无 邮件 短信 邮件,提供接口允许开发者扩展
    系统依赖 关系型数据库(MySQL、Oracle…) MySQL 人民币 任意Spring Data Jpa支持的关系型数据库(MySQL、Oracle…)
    DAG工作流 不支持 不支持 支持 支持