XXL-job 学习笔记

XXL-job 学习笔记
一、学习XXL-job之前,先了解一下什么是xxl-job;
XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
官方地址中文版:http://www.xuxueli.com/xxl-job

Quartz作为开源作业调度中的佼佼者,是作业调度的首选。集群环境中Quartz采用API的方式对任务进行管理,Quartz存在以下问题:
问题一:调用API的的方式操作任务,不人性化;
问题二:需要持久化业务QuartzJobBean到底层数据表中,系统侵入性相当严重。
问题三:调度逻辑和QuartzJobBean耦合在同一个项目中,这将导致一个问题,在调度任务数量逐渐增多,同时调度任务逻辑逐渐加重的情况加,此时调度系统的性能将大大受限于业务;
问题四:quartz底层以“抢占式”获取DB锁并由抢占成功节点负责运行任务,会导致节点负载悬殊非常大;而XXL-JOB通过执行器实现“协同分配式”运行任务,充分发挥集群优势,负载各节点均衡。
XXL-JOB弥补了quartz的上述不足之处。

二、环境准备
在准备xxl-job环境之前先了解一下docker,因为xxl-job我是依赖于docker环境安装的,当然也可以采用传统方式安装;不过我还是觉得docker比较方便,不污染环境。具体安装方法有很多,由于不是本文猪脚,就不在此赘述;
通过docker命令拉取xxl-job-admin的镜像:
docker pull xuxueli/xxl-job-admin:2.1.2
执行docker run启动container
docker run –e                                         
PARAMS="--spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8 --spring.datasource.username=数据库用户名 --spring.datasource.password=数据库密码" -p 映射主机的端口:8080 -v /tmp:/data/applogs --name xxl-job-admin  -d 镜像ID

命令的PARAMS是作者给的参数名称,具体需要了解Dockfile的编写
启动之后可以访问job-admin任务管理后台,界面如下:
 

三、任务使用
1.在需要使用任务的项目中引入maven依赖
<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>2.1.2</version>
</dependency>
2.添加yml配置
---
#xxl-job
### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
xxl.job.admin.addresses: http://之前部署服务器地址:8085/xxl-job-admin
### xxl-job executor address
xxl.job.executor.appname: xxl-job-executor-sample
xxl.job.executor.ip:
xxl.job.executor.port: 9999
### xxl-job, access token
xxl.job.accessToken:
### xxl-job log path
xxl.job.executor.logpath: /data/applogs/xxl-job/jobhandler
### xxl-job log retention days
xxl.job.executor.logretentiondays: 30

3.代码编写我们的任务执行器
 
4.使用管理后台创建执行器,
 
5.创建要执行的任务
 
选择之前我们创建的执行器,java一般是bean模式,与代码中的bean相同即可,输入cron表达式,跟@ Scheduled和quartz类似。保存后启动任务即可。如果再分布式项目中可以把执行器单独抽取一个服务,这样也能体现出xxl-job在分布式架构下的完美表现。这仅仅只是它的最基本使用方法,具体有多强大就需要你去发现了。

猜你喜欢

转载自www.cnblogs.com/jasonzeng/p/12498443.html
今日推荐