Elastic-Job 和 XXL-Job是目前国内应用最为广泛的任务调度解决方案,前文《云原生:微服务架构的任务调度解决方案elastic-job》介绍了前者,本文讲重点介绍后者。相比之下,XXL-Job的使用厂商要比Elastic-Job更多。

XXL-JOB

XXL-Job是大众点评员工徐雪里于2015年发布的分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

微服务框架学习(微服务架构集中式任务管理框架xxl-job)(1)

XXL-Job架构

XXL-Job将调度行为抽象为调度中心这个公共平台,平台自身不承担业务逻辑,调度中心负责发起调度请求。任务被抽象成分散的 JobHandler,交由执行器管理,执行器负责接收调度请求并执行对应的 JobHandler 中的业务逻辑。“调度”和“任务”两部分相互解耦,提高系统整体稳定性和扩展性。

部署和安装

(1)下载源码

XXL-Job的代码在Github和Gitee上均有开源。

git clone https://github.com/xuxueli/xxl-job.git

(2)IDEA以Maven项目导入代码

微服务框架学习(微服务架构集中式任务管理框架xxl-job)(2)

目录结构

(3)初始化数据库

数据库脚本在doc/db目录下。执行以上脚本即可在本地环境创建一个基于xxl-job数据库。

(4)调度器项目xxl-job-admin配置

修改数据源配置文件、将xxl-job默认用户名、密码添加上。

### web server.port=28080 server.servlet.context-path=/xxl-job-admin ### xxl-job, datasource spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver xxl.job.login.username=admin xxl.job.login.password=123456

(5)Maven构建启动

启动工程 ,在浏览器上输入http://localhost:28080/xxl-job-admin

微服务框架学习(微服务架构集中式任务管理框架xxl-job)(3)

XXL-Job登录首页

特色功能

XXL-JOB 的功能丰富,可运维能力比较强,不但支持控制台动态创建任务,还有调度日志、运行报表等功能。

微服务框架学习(微服务架构集中式任务管理框架xxl-job)(4)

运行报表

微服务框架学习(微服务架构集中式任务管理框架xxl-job)(5)

调度日志

XXL-Job 的历史记录、运行报表和调度日志,都是基于数据库实现的。

微服务框架学习(微服务架构集中式任务管理框架xxl-job)(6)

XXL-JOB数据库

由此可以看出,XXL-JOB 所有功能都依赖数据库,且调度中心不支持分布式架构,在任务量和调度量比较大的情况下,会有性能瓶颈。不过如果对任务量级、高可用、监控报警、可视化等没有过高要求的话,XXL-JOB 基本可以满足定时任务的需求。

总结

最后我们总结一下XXL-Job的优点,尤其是与Elastic-Job的对比。

,