XXL-JOB初入门
工作需要使用,由于之前没有使用经验,特此学习了一波许雪里老师的作品,加深自己的印象,学习过程中意外发现一个Bug,作为彩蛋。
XXL-JOB是什么?
首先需要理解XXL-JOB是啥,才能更好的知道他能干什么。
官网简介:
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
是一个分布式调度平台,已经接入了多家公司线上产品线(暗示,稳定可靠)。
XXL-JOB特性
- 简单,有Web页面支持
- 动态,可以手动控制任务启动和停止
- 调度中心HA(中心式),可以集群达到高可用
- 执行器HA(分布式),可以使用容错策略达到HA
- 注册中心:执行器会周期性的自动注册任务
- 弹性扩容缩容
- 触发策略 ...
官网显示有30条特性,就不一一列举了,后面XXL-JOB源码分析会带大家一起看看,具体怎么实现这些特性的。
XXL-JOB架构
xxl-job admin: 注册中心和任务控制中心,负责xxl-job executor注册,与任务调度
xxl-job executor:
负责接收任务元数据,进行执行任务
MySQL: 负责存储元数据
XXL-JOB 快速入门
下载XXL-Job源码到本地运行
$ git clone https://github.com/xuxueli/xxl-job
直接用IDEA打开,可以发现,包含三个模块:
xxl-job-admin: 管理台
xxl-job-core: xxl-job 核心源码实现
xxl-job-executor-samples: xxl-job 主要sample
我们首先执行下 /xxl-job/doc/db/tables_xxl_job.sql
数据脚本,然后直接启动admin
和samples
下的ExecutorApplication
即可。
然后打开http://localhost:8080/xxl-job-admin
输入默认用户名和密码admin/123456
控制台包含如下几个模块
- 运行报表
- 任务管理
- 调度日志
- 执行器管理
- 用户管理
基本上包含了架构中说的那些东西,见名知义
下面我们来玩一玩,这个控制台。
- 新建一个执行器,用来执行我们的任务
注意这个AppName,需要与samples
下xxl.job.executor.appname
配置的一样,不然无法自动注册成功,除非手动录入。我这里xxl.job.executor.appname=xxl-job-executor-sample
,所以我采用手动录入的方式。
- 新建任务执行刚才新建的执行器
jobHandler这个使用的sample
下的demoJobHanlder
这个任务每10s运行一次
- 开始任务,等待框架执行
- 查看调度日志
可以看到我们的测试执行器
运行成功,每次都是10s运行一次
总结
最终一次完整的XXL-JOB体验就完成了,真就像官网介绍的那样,简单,动态,轻量。
本节主要理解
- xxl-job是一个轻量级分布式调度平台
- 包含一些分布式的特性
- 快速上手一把梭
我个人工作需要用到XXL-JOB,因为之前没有使用经验,所以自己下载下来玩了一会儿,看了看源码,发现XXL-JOB代码写的非常地简洁易懂,后面应该还会更新XXL-JOB的源码阅读系列,如果感兴趣的话,可以关注我。
彩蛋
我阅读源码的过程中意外发现,master分支,也就是2.3.1-SNAPSHOT
这个版本,将语言切换到英文,任务管理下面cron表达式,将tab切换为分钟,无法按照分钟全选,因此判定为Bug。