首页 > 百科知识 正文

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

时间:2023-11-22 14:04:37 阅读:793 作者:在某个城

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张

目录结构

  • /doc 文档资料 包括"调度数据库" 建表脚本
  • /xxl-job-core 公共jar依赖
  • /xxl-job-admin 调度中心的源代码 是SpringBoot项目 可以直接启动
  • /xxl-job-executor-samples 执行器示例代码 包含了基于spring、springboot、jfinal等环境的示例代码。可以直接基于示例代码开发

(3)初始化数据库

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

  • xxl_job_info 调度扩展信息表,用于保存xxl-job调度任务的扩展信息,如任务分组、任务名、机器地址、执行器、执行入参和报警邮件等
  • xxl_job_log 调度日志表:用于保存xxl-job任务调度的历史信息,如调度结果、执行结果、调度入参、执行器等
  • xxl_job_log_report 调度日志报表,用户存储xxl-job任务调度日志的报表,调度中心报表功能页面会用到
  • xxl_job_logglue 任务GLUE日志,用于保存GLUE更新历史,用于支持GLUE的版本回溯功能
  • xxl_job_registry 执行器注册表,维护在线的执行器和调度中心机器地址信息
  • xxl_job_group 执行器信息表,维护任务执行器信息
  • xxl_job_user 系统用户表
  • xxl_job_lock 任务调度锁表

(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的对比。

  • 轻量级,支持通过Web页面对任务进行动态CRUD操作,操作简单;
  • 只依赖数据库作为集群注册中心,接入开发简单,不需要ZooKeeper;
  • 高可用、解耦、高性能、监控报警、分片、重试、故障转移;
  • 团队持续开发,社区活跃;
  • 支持后台直接查看每个任务执行实时日志。

版权声明:该问答观点仅代表作者本人。如有侵犯您版权权利请告知 cpumjj@hotmail.com,我们将尽快删除相关内容。