与开源产品对比

本文主要介绍任务调度 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、短信、电话。

报警联系人

不支持

集成云监控报警能力,支持实例级别、任务级别报警监控。