本文主要介绍任务调度 XXL-JOB 版与开源产品的比对。
功能集 | 功能 | 开源 XXL-JOB | XXL-JOB on SchedulerX |
兼容性 | 协议兼容 | 不同版本间编程接口、通信协议、表结构不一致,升级版本有风险。 | 兼容 XXL-JOB v2.2.0 以上所有版本接入,不需维护调度节点。 |
基础能力 | 调度类型 | cron | cron、fixed_rate、one_time、api。 |
时区 | 不支持 | 支持 | |
自定义日历 | 不支持 | 支持 | |
指定开始时间 | 不支持 | 支持 | |
广播分片 | 不支持聚合 | 支持聚合 | |
运维动作 | 手动运行、停止。 | 手动运行、停止、原地重跑、重刷数据。 | |
优雅下线 | 不支持,客户端停止的时候,会强制调用线程中断。 | 支持 | |
任务灰度 | 不支持 | 支持按照标签路由调度能力,集成 MSE 微服务治理后,可以做到动态打标和全链路灰度能力。 | |
稳定性 | 限流控制 | 仅支持客户端限流,多个 executor 无法做到幂等执行,导致任务重复执行,浪费计算资源,甚至引发故障。 | 服务端控制,支持任务级别、应用级别的限流控制。 |
拖垮数据库可能性 | 每次调度都会在数据库保留历史执行记录,默认是存最近30天的记录,导致xxl_job_log表数据量增长太快,拖垮整个数据库的性能,从而影响任务调度。 | 采用存储计算分离、冷热数据备份技术,将任务最近执行的历史记录保留在数据库中,任务长时间的历史记录存到日志服务中归档,解决了开源 XXL-JOB 的历史记录存储问题。 | |
调度任务漏发可能性 | 每次调度都需要通过数据库捞取要调度的执行计划,如果捞取超时了,就会导致任务漏触发。 | 采用分布式架构,不同 server 在内存中调度不同的定时任务,对数据库压力小,大大降低了漏触发的概率。 | |
客户端日志丢失可能性 | 调度特别频繁会导致小文件特别多,从而影响客户端的性能,一旦客户端机器挂了,这台机器上所有日志文件也会丢失。 | 提供了采集日志的能力,将客户端的日志采集到日志服务 SLS 中,还通过关键字和过滤条件,快速定位到出问题的日志。 | |
安全 | 单点登录 | 不支持 | 支持 |
细粒度权限控制 | 不支持 | 支持不同资源的授权和不同操作的授权。 | |
资源授权 | 不支持 | 支持 | |
资源隔离 | 不支持 | 支持应用级别权限控制,不同的应用分配不同的 Access Token。 | |
可观测能力 | 调度事件 | 不支持 | 支持 |
操作记录 | 不支持 | 支持 | |
日志 | 存在客户端,每次执行产生一个小文件,有性能和稳定性问题。 | 存储在日志服务,支持查看最近2个月的日志。 | |
报警监控 | 报警方式 | 邮件 | 邮件、webhook、短信、电话。 |
报警联系人 | 不支持 | 集成云监控报警能力,支持实例级别、任务级别报警监控。 |