《分布式任务调度平台XXLJOB》手册
XXL-JOB架构图
执行器服务 jetty
调度请求 queue
回调服务 执行线程 回调日志 queue 任务
调度日志 / GLUE日志
调度中心
执行器
XXL-JOB架构图 v1.3
执行器
注册模块
注册模块 调度请求 queue
JobHandler
…… 调度器 quartz
执行器服务 jetty
调度池
回调服务 执行线程 回调日志 queue 任务
调度日志 / GLUE日志
调度中心
执行器
XXL-JOB架构图 v1.5
任务管理 执行器 任务模式 JobHandler
执行器管理 注册方式 AppName 机器地址列表
调度器 (quartz)
执行器服务( jetty)
调度请求 (queue)
……
日志管理 调度日志 Rolling日志 GLUE版本日志
JobHandler
回调服务 (API)
回调线程
调度结果 (queue)
任务线程
……
数据中心 调度中心
注册服务 (API)
注册线程
自研RPC
执行器
XXL-JOB架构图 v1.8
意义:
调度中心
分 片 任 务 分片参数:0, 3 分片参数:1, 3 分片参数:2, 3 执行器集群
执行器0 执行器1 执行器2
……
其他 运行报表 失败告警 任务依赖 ……
Rolling日志 (实时)
日志服务 ( jetty)
执行日志 (Log文件)
JobHandler
回调服务 (API)
回调线程
调度结果 (queue)
任务线程
……
数据中心 调度中心
《分布式任务调度平台XXL-JOB》手册
《分布式任务调度平台XXL-JOB》手册文档历史记录目录1:简介 (3)2:安装 (3)3:配置 (3)3.1数据库准备 (4)3.2源码准备 (5)3.3部署准备 (5)3.3.1 配置部署“调度中心” (5)3.3.2 配置部署“执行器项目” (7)4:使用 (9)步骤一:新建任务 (9)步骤二:“GLUE模式(Java)”任务开发 (10)步骤三:触发执行 (10)步骤四:查看日志 (10)5:总结 (11)1:简介XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展,XXL-JOB是基于开源Quartz 调度内核的、为方便企业调度场景而开源的一款实用的调度工具。
自带任务配置页面,任务监控,分布式执行器等功能。
2:安装下载地址(最新1.9版本迭代中,可选择稳定版本1.8.2下载)码云:https:///xuxueli0323/xxl-job/tree/v1.8.23:配置解压下载文件,得到如下文件结构,- /doc :文档资料- /db :“调度数据库”建表脚本- /xxl-job-admin :调度中心,项目源码- /xxl-job-core :公共Jar依赖- /xxl-job-executor-samples :执行器,Sample示例项目3.1数据库准备使用mysql 新建数据库xxl-job ,导入下载文件夹中/doc/db/tables_xxl_job.sql 文件,应生成16张表,如图所示。
3.2源码准备按照maven格式将源码导入IDE,使用maven进行编译即可,源码结构如下xxl-job-admin:调度中心xxl-job-core:公共依赖xxl-job-executor:执行器Sample示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器):xxl-job-executor-sample-spring:Spring版本,通过Spring容器管理执行器,比较通用;:xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执行器;:xxl-job-executor-sample-jfinal:JFinal版本,通过JFinal管理执行器;:xxl-job-executor-sample-nutz:Nutz版本,通过Nutz管理执行器;3.3部署准备3.3.1 配置部署“调度中心”调度中心项目:xxl-job-admin作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。
xxl-job介绍
xxl-job介绍什么是任务调度什么是任务调度?某⼀时间段进⾏任务的操作。
具体任务调度有哪些应⽤的场景?数据同步、交易信息、清除⽤户的信息、定期发送报表数据、活动推送等。
传统实现定时任务的⽅式?Thread、TimeTask、ScheduleExecutorService、Quartz 等;不过,这⼏种⽅式都是在单点系统使⽤,⼀旦Job服务器宕机之后,就必须采取⼀些措施;具体操作如下:(1) 使⽤⼼跳检测监控⾃动重启、任务补偿机制(任务做标记)(2) 定时任务在执⾏代码的时候中间突然报错,使⽤⽇志记录错误,跳过继续执⾏,在使⽤定时Job 扫描⽇志错误记录,进⾏补偿信息。
(3) 定时Job 在执⾏的时候,导致整个 Job 异常结束掉,发送邮件通知给运维⼈员。
分布式定时任务的⽅式?XXL-Job、Elastic-job等。
不过,既然采⽤分布式,那么肯定会遇到项⽬部署集群,导致任务重复执⾏多次;具体操作如下:(1) Zookeeper 实现分布式锁,每次保证拿到锁再执⾏,效率⽐较低。
(2) 配置⽂件中加⼊定时任务的开关,但是只能保证⼀台服务器执⾏,变为单击服务器。
(3) 启动的时候使⽤数据库唯⼀标识;同样是效率低。
(4) 分布式调度任务平台,解决了任务幂等问题,Job 负载均衡轮询机制(推荐)。
那么现在我们来总结下,⾸先传统的定时任务,⼏乎⽆法做到⾼可⽤,再加上项⽬部署集群,会导致任务幂等性问题;此时分布式定时任务调度平台便发挥了作⽤,咱们拿 XXL-Job 来进⾏说明;相关作⽤如下:(1) ⽀持Job集群,Job 负载均衡轮询机制保证幂等性问题。
(2) ⽀持Job补偿,如果Job执⾏失败的话,会⾃动实现重试机制,超过重启次数后,会发送邮件通知运维⼈员。
(3) ⽀持Job⽇志记录。
(4) 动态配置定时规则,传统定时Job触发规则都是写死在代码中。
XXL-JOB简介开源社区:环境:Maven3+Jdk1.8+Mysql5.7+xxl-job执⾏原理调度平台、执⾏器、任务管理,相关解释如下:调度平台:统⼀管理任务调度的平台,负责转发任务到对应的执⾏服务器。
SpringCloud+xxl-job任务调度的简单使用
SpringCloud+xxl-job任务调度的简单使⽤概述: xxl-job是⼀个轻量级分布式任务调度平台,其核⼼设计⽬标是开发迅速、学习简单、轻量级、易扩展。
之前开发的SpringCloud项⽬,因为其中有个应⽤有⼏个定时任务,为了统⼀管理和更可视化以及监控提醒于是加⼊了xxl-job。
好了,废话不多说,直接上⼲货。
使⽤: 然后导⼊其中的xxl-job-admin,我把xxl-job任务调度单独抽成了⼀个服务(坚持⼀个服务专做⼀件事)然后修改application.properties的配置, 修改端⼝号,这⾥我的job应⽤端⼝是8083修改数据库的路径和账号密码 这是我的数据库配置, 然后修改这⾥这⾥在后边解释为什么要配置邮箱(发件⼈的邮箱),这⾥的密码不是登陆的密码,⽽是这⾥的授权码 这⾥简单说⼀下授权码的配置,登陆163邮箱然后点击设置,再点击POP3/SMTP/IMAP,然后再点击客户端授权密码--->开启客户端授权码--->重置授权码(如果忘记了授权码),然后设置授权码,这个授权码就是spring.mail.password的密码。
(port要填写什么根据⾃⼰的实际情况填写我给粘到下边了) 然后在xxl-job-admin服务中导⼊xxl-job-core的包<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.1.0</version></dependency>好的,启动这个应⽤(这⾥要先启动⼀下eureka)然后访问localhost:8083(⾃⼰配置的端⼝号)如果出现这个界⾯,那就是配置成功了。
(默认账号密码是admin 123456)下⼀步要在有定时任务的应⽤中配置 在有定时任务的应⽤中导⼊xxl-job-core包(同上),然后在应⽤的yml/properties的配置⽂件中加⼊配置(这⾥我的是.yml⽂件) 然后配置好⾃⼰此应⽤的端⼝号,然后新建⼀个config去赋值(在下载的⽂件中xxl-job-2.1.0\xxl-job-2.1.0\xxl-job-executor-samples\xxl-job-executor-sample-springboot\src\main\java\com\xxl\job\executor\core\config\XxlJobConfig.java,可以直接导⼊) 然后再去新建⼀个类继承IJobHandler然后execute的⽅法中编写⾃⼰要执⾏的定时任务, 这⾥的XxlJobLogger.log是xxl收集⽇志的类,好了,到此为⽌代码⽅⾯就结束了,然后启动这个应⽤ 下⼀步: 打开localhost:8083,然后登陆进去点击执⾏器管理--->新增执⾏器(这⾥的appName就是之前在有定时任务的应⽤中的.yml/.properties⽂件中配置的appname,名称就相当于备注,排序就是列表显⽰的先后顺序,注册⽅式选⾃动注册,机器地址不⽤填写,然后保存)--->点击任务管理--->新增(这⾥的执⾏器就是刚才新增的执⾏器,任务描述就是备注,如果没有集群这⾥的路由策略就随便选⼀个就可以,cron就是执⾏定时任务的执⾏策略不懂得可以去搜搜,运⾏模式就选bean就可以具体的也可以去百度⼀下,JobHandler是之前新建的定时任务类,阻塞处理策略就不⽤解释了字⾯意思就可以理解,⼦任务id是什么呢,如果定时任务直接有业务关联要有先后顺序的话这⾥的⼦任务id就要写执⾏完这个任务需要⽴马执⾏下个任务的id,任务超时时间就是如果这个任务超过了这个设定的时间那么就会报警单位是秒,报警邮箱就是如果任务执⾏失败了那么就会给这⾥填写的邮箱发送信息,可以填写多个,那么发件⼈是谁呢,就是之前说的在xxl-job-admin中配置的163邮箱)都填写完了然后点击保存。
《分布式任务调度平台XXL_JOB》手册范本
《分布式任务调度平台XXL-JOB》手册文档历史记录目录1:简介 (3)2:安装 (3)3:配置 (3)3.1数据库准备 (4)3.2源码准备 (5)3.3部署准备 (5)3.3.1 配置部署“调度中心” (5)3.3.2 配置部署“执行器项目” (7)4:使用 (9)步骤一:新建任务 (9)步骤二:“GLUE模式(Java)”任务开发 (10)步骤三:触发执行 (10)步骤四:查看日志 (10)5:总结 (11)1:简介XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展,XXL-JOB是基于开源Quartz 调度核的、为方便企业调度场景而开源的一款实用的调度工具。
自带任务配置页面,任务监控,分布式执行器等功能。
2:安装下载地址(最新1.9版本迭代中,可选择稳定版本1.8.2下载)码云:https://gitee./xuxueli0323/xxl-job/tree/v1.8.23:配置解压下载文件,得到如下文件结构,- /doc :文档资料- /db :“调度数据库”建表脚本- /xxl-job-admin :调度中心,项目源码- /xxl-job-core :公共Jar依赖- /xxl-job-executor-samples :执行器,Sample示例项目3.1数据库准备使用mysql 新建数据库xxl-job ,导入下载文件夹中/doc/db/tables_xxl_job.sql 文件,应生成16表,如图所示。
3.2源码准备按照maven格式将源码导入IDE,使用maven进行编译即可,源码结构如下xxl-job-admin:调度中心xxl-job-core:公共依赖xxl-job-executor:执行器Sample示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器):xxl-job-executor-sample-spring:Spring版本,通过Spring容器管理执行器,比较通用;:xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执行器;:xxl-job-executor-sample-jfinal:JFinal版本,通过JFinal管理执行器;:xxl-job-executor-sample-nutz:Nutz版本,通过Nutz管理执行器;3.3部署准备3.3.1 配置部署“调度中心”调度中心项目:xxl-job-admin作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。
分布式任务调度平台XXL-JOB搭建教程
分布式任务调度平台XXL-JOB搭建教程 关于分布式任务调度平台XXL-JOB,其实作者许雪⾥在其发布的中已经介绍的很清楚了,这⾥我就不做过多的介绍了,关于其搭建教程,本⼈依照其⽂档搭建起来基本上也没遇到啥问题,这⾥通过博客的形式记录下来。
1、源码下载地址 ①、GitHub: ②、码云:2、⽂档地址 ①、中⽂⽂档: ②、英⽂⽂档:3、源码结构 通过上⾯给出的源码下载地址,我们将源码clone到IDEA中,如下:4、初始化数据库 初始化脚本在上⾯源码⽬录的 /doc/db/tables_xxl_job.sql ,将此脚本在MySQL数据库中执⾏⼀遍。
执⾏完毕,会在MySQL数据库中⽣成如下 16 张表:5、配置调度中⼼ 调度中⼼就是源码中的 xxl-job-admin ⼯程,我们需要将其配置成⾃⼰需要的调度中⼼,通过该⼯程我们能够以图形化的⽅式统⼀管理任务调度平台上调度任务,负责触发调度执⾏。
①、修改调度中⼼配置⽂件 ⽂件地址:/xxl-job/xxl-job-admin/src/main/resources/xxl-job-admin.properties 配置⽂件说明:1 ### 1、调度中⼼项⽬的端⼝号以及访问路径2 server.port=80803 server.context-path=/xxl-job-admin45 ### 2、配置静态⽂件的前缀6 spring.mvc.static-path-pattern=/static/**7spring.resources.static-locations=classpath:/static/89### 3、配置模板⽂件10spring.freemarker.templateLoaderPath=classpath:/templates/11spring.freemarker.suffix=.ftl12spring.freemarker.charset=UTF-813spring.freemarker.request-context-attribute=request14spring.freemarker.settings.number_format=0.##########1516### 4、配置mybatis的mapper⽂件地址17mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml1819### 5、配置数据库的地址20spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl-job?Unicode=true&characterEncoding=UTF-8ername=root22spring.datasource.password=root_pwd23spring.datasource.driver-class-name=com.mysql.jdbc.Driver2425spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource26spring.datasource.tomcat.max-wait=1000027spring.datasource.tomcat.max-active=3028spring.datasource.tomcat.test-on-borrow=true29spring.datasource.tomcat.validation-query=SELECT 130spring.datasource.tomcat.validation-interval=300003132### 6、配置报警邮箱33spring.mail.host=34spring.mail.port=25ername=xxx@36spring.mail.password=xxx37spring.mail.properties.mail.smtp.auth=true38spring.mail.properties.mail.smtp.starttls.enable=true39spring.mail.properties.mail.smtp.starttls.required=true404142### 7、管理界⾯的登录⽤户名密码ername=admin44xxl.job.login.password=1234564546### 8、调度中⼼通讯TOKEN,⾮空时启⽤47xxl.job.accessToken=4849### 9、调度中⼼国际化设置,默认为中⽂版本,值设置为“en”时切换为英⽂版本50xxl.job.i18n= 注意:基本上上⾯的配置⽂件我们需要修改的只有第 5 点,修改数据库的地址,这要与我们前⾯初始化的数据库名称径,⽤户名密码保持⼀致; 第⼆个就是修改第 6 点,报警邮箱,因为该⼯程任务失败后有失败告警功能,可以通过邮件来提醒,如果我们需要此功能,可以配置⼀下。
一种基于XXL-JOB实现分布式调度任务的方法及系统[发明专利]
(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号 (43)申请公布日 (21)申请号 201910918340.5(22)申请日 2019.09.26(71)申请人 山东浪潮通软信息科技有限公司地址 250100 山东省济南市高新区孙村镇科航路2877号(72)发明人 高新 (74)专利代理机构 济南信达专利事务所有限公司 37100代理人 姜明(51)Int.Cl.G06F 8/30(2018.01)G06F 9/50(2006.01)G06F 16/27(2019.01)(54)发明名称一种基于XXL-JOB实现分布式调度任务的方法及系统(57)摘要本发明公开了一种基于XXL -JOB实现分布式调度任务的方法及系统,属于计算机软件开发技术领域。
本发明的基于XXL -JOB实现分布式调度任务的方法配置部署调度中心,统一管理任务调度平台上调度任务,触发调度执行,并提供任务管理平台;配置部署执行器项目,接收调度中心的调度并执行;在可视化界面配置执行器及新建任务。
该发明的基于XXL -JOB实现分布式调度任务的方法能够减轻服务器压力,提高系统的运行效率,在确保各用户数据间隔的同时能完成调度任务,具有很好的推广应用价值。
权利要求书1页 说明书6页 附图1页CN 110688101 A 2020.01.14C N 110688101A1.一种基于XXL -JOB实现分布式调度任务的方法,其特征在于:该方法配置部署调度中心,统一管理任务调度平台上调度任务,触发调度执行,并提供任务管理平台;配置部署执行器项目,接收调度中心的调度并执行;在可视化界面配置执行器及新建任务。
2.根据权利要求1所述的基于XXL -JOB实现分布式调度任务的方法,其特征在于:具体包括以下步骤:S1、初始化调度数据,创建数据库;S2、配置调度中心;S3、配置执行器项目,配置项目中的配置文件;S4、新增执行器;S5、新建任务;S6、编写代码来实现执行调度任务的执行器。
分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn)
分布式定时任务调度系统技术解决⽅案(xxl-job、Elastic-job、Saturn)1.业务场景保险⼈管系统每⽉⼯资结算,平安有150万代理⼈,如何快速的进⾏⼯资结算(数据运算型)保险短信开门红/电商双⼗⼀ 1000w+短信发送(短时汇聚型)⼯作中业务场景⾮常多,所涉及到的场景也各不相同,这使得我们定时任务系统应该集管理、调度、任务分配、监控预警为⼀体的综合调度系统,如何打造⼀套健壮的、适应不同场景的系统,技术选型尤其重要。
针对以上场景我们需要我们的分布式任务系统具备以下能⼒:1.⽀持多种作业类型(shell作业/Java作业)2.⽀持作业HA,负载均衡和失败转移3.⽀持弹性扩容(应对开门红以及促销活动)4.⽀持Job Timeout 处理5.⽀持统⼀监控和告警6.⽀持作业统⼀配置7.⽀持资源隔离和作业隔离2.定时任务调度的特点任务调度就是设点某⼀时间点⾃动触发的任务,该任务可以在时间规律上去循环执⾏。
⼀般的技术quartz、spring task、java.util.Timer,这⼏种如果在单⼀机器上跑其实问题不⼤,但是如果⼀旦应⽤于集群环境做分布式部署,就会带来⼀个致命的特点:时间驱动:系统⼀般可以通过时间来驱动,定时定点定次。
批量处理:批量处理堆积的数据更加⾼效,在不需要实时性的情况下⽐消息中间件更有优势。
⽽且有的业务逻辑只能批量处理。
如对账批处理、资⾦管理系统回盘、部分银⾏的报盘前的制盘⾮实时性:定时任务不要求实时性,⼀般不⽤于C端⽤户的交互,更多的⽤于业务数据的处理隔离性/专⼀性:可以跟其他系统分离,只关注业务数据的处理,不影响⽤户的操作和⽤户系统的性能。
基本原理:3.开源定时任务框架Quartz:Java事实上的定时任务标准。
但Quartz关注点在于定时任务⽽⾮数据,并⽆⼀套根据数据处理⽽定制化的流程。
虽然Quartz可以基于数据库实现作业的⾼可⽤,但缺少分布式并⾏调度的功能。
xxl-job调度任务简单使用
xxl-job调度任务简单使⽤1. 简介XXL-JOB是⼀个分布式任务调度平台,其核⼼设计⽬标是开发迅速、学习简单、轻量级、易扩展。
现已开放源代码并接⼊多家公司线上产品线,开箱即⽤。
2. 使⽤步骤1:源码下载数据库脚本再源码/xxl-job/doc/db/tables_xxl_job.sql3.调度中⼼项⽬:xxl-job-admin修改配置⽂件中的数据库地址或端⼝/xxl-job/xxl-job-admin/src/main/resources/application.properties4.启动xxl-job-admin⼯程访问地址为:账号/密码 admin/1234565.⾄此,xxl-job服务启动完成,接下来将xxl植⼊到所要添加定时任务的⼯程中此次测试我使⽤的是:2.3.0版本<!-- /maven2/com/xuxueli/xxl-job-core/ --><dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.3.0</version></dependency>6.修改⼯程的yml⽂件,引⼊xxl配置#引⼊xxl-jobxxl:job:admin:# 调度中⼼部署跟地址 [选填]:如调度中⼼集群部署存在多个地址则⽤逗号分隔。
# 执⾏器将会使⽤该地址进⾏"执⾏器⼼跳注册"和"任务结果回调";为空则关闭⾃动注册;addresses: http://localhost:8080/xxl-job-adminexecutor:# 执⾏器AppName [选填]:执⾏器⼼跳注册分组依据;为空则关闭⾃动注册appname: springcloudalibaba-user-experience-job# 执⾏器IP [选填]:默认为空表⽰⾃动获取IP,多⽹卡时可⼿动设置指定IP,该IP不会绑定Host仅作为通讯实⽤;# address: http://192.168.2.29:9191# 地址信息⽤于 "执⾏器注册" 和 "调度中⼼请求并触发任务";# ip: 192.168.2.29# 执⾏器运⾏⽇志⽂件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使⽤默认路径;logpath: ./logs/xxl-job# 执⾏器⽇志⽂件保存天数 [选填] :过期⽇志⾃动清理, 限制值⼤于等于3时⽣效; 否则, 如-1, 关闭⾃动清理功能;logretentiondays: 30# 执⾏器端⼝号 [选填]:⼩于等于0则⾃动获取;默认端⼝为9999,# 单机部署多个执⾏器时,注意要配置不同执⾏器端⼝;port: 9192# 执⾏器通讯TOKEN [选填]:⾮空时启⽤;# accessToken:7.添加config配置⽂件import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Profile;/*** xxl-job config** @author* @date 2020/11/23*/@Slf4j@Configuration@Profile("!dev")public class XxlJobConfig {@Value("${xxl.job.admin.addresses}")private String adminAddresses;@Value("${xxl.job.executor.appname}")private String appName;/*@Value("${xxl.job.executor.address}")private String address;@Value("${xxl.job.executor.ip}")private String ip;*/@Value("${xxl.job.executor.port}")private int port;@Value("${xxl.job.executor.logpath}")private String logPath;@Value("${xxl.job.executor.logretentiondays}")private int logRetentionDays;/*** 注意:如果想本机调试,需要设置address、ip* @return*/@Beanpublic XxlJobSpringExecutor xxlJobExecutor() {XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppname(appName);//xxlJobSpringExecutor.setAddress(address);xxlJobSpringExecutor.setPort(port);//xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);return xxlJobSpringExecutor;}}8.执⾏器管理--》添加执⾏器添加完成后,可以点击查看详情9.再代码中创建定时任务import com.alibaba.fastjson.JSONObject;import com.xxl.job.core.context.XxlJobHelper;import com.xxl.job.core.handler.annotation.XxlJob;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.InitializingBean;import ponent;import java.util.Date;@Slf4j@Componentpublic class UserJob1 implements InitializingBean {/*** 定时同步群发任务结果** @return*/@XxlJob("xxlJobTest")public String execute() {("start userTodoJob, time at:" + new Date());String params = XxlJobHelper.getJobParam();JSONObject jsonObject = JSONObject.parseObject(params);Integer orgId = jsonObject.getInteger("orgId");String corpId = jsonObject.getString("corpId");System.out.println("执⾏了"+params);return "执⾏了";}@Overridepublic void afterPropertiesSet() throws Exception {("Combination Job init suc at: " + new Date());}}10.任务管理中添加新的任务添加完成后,可再后⾯对该任务进⾏操作。
介绍一种很好用的任务调度平台
介绍⼀种很好⽤的任务调度平台1 总体设计分布式任务调度平台是什么XXL-JOB是⼀个轻量级分布式任务调度平台,和quartz相似,但是XXL-JOB将调度中⼼与执⾏器解耦,弥补了quartz的不⾜(使⽤API⽅式操作任务,不⼈性化;系统侵⼊性严重等)其核⼼设计⽬标是开发迅速、学习简单、轻量级、易扩展。
现已开放源代码并接⼊多家公司线上产品线,开箱即⽤。
⽂档我这边可以给。
源码⽬录介绍/xxl-job-admin :调度中⼼,项⽬源码/xxl-job-core :公共Jar依赖/xxl-job-executor-samples :执⾏器,Sample⽰例项⽬(⼤家可以在该项⽬上进⾏开发,也可以将现有项⽬改造-⽣成“调度数据库”配置XXL-JOB调度模块基于Quartz集群实现,其“调度数据库”是在Quartz的11张集群mysql表基础上扩展⽽成。
XXL-JOB⾸先定制了Quartz原⽣表结构前缀(XXL_JOB_QRTZ_)。
我们代码配置和源码配置⼀样在此基础上新增了⼏张张扩展表。
正常情况下总共16张表所有表(若想详细了解可以查看⽂档):架构设计设计思想“调度中⼼”负责发起调度请求。
“执⾏器”负责接收调度请求并执⾏对应的JobHandler 中业务逻辑。
系统组成调度模块(调度中⼼)负责管理调度信息,按照调度配置发出调度请求,⾃⾝不承担业务代码。
调度系统与任务解耦,提⾼了系统可⽤性和稳定性,同时调度系统性能不再受限于任务模块;⽀持可视化、简单且动态的管理调度信息,包括任务新建,更新,删除,GLUE 开发和任务报警等,所有上述操作都会实时⽣效,同时⽀持监控调度结果以及执⾏⽇志,⽀持执⾏器Failover 。
- XXL_JOB_QRTZ_TRIGGER_GROUP :执⾏器信息表,维护任务执⾏器信息;- XXL_JOB_QRTZ_TRIGGER_REGISTRY :执⾏器注册表,维护在线的执⾏器和调度中⼼机器地址信息;- XXL_JOB_QRTZ_TRIGGER_INFO :调度扩展信息表: ⽤于保存XXL-JOB 调度任务的扩展信息,如任务分组、任务名、机器地址、执⾏器、执⾏⼊参和报警邮件等等;- XXL_JOB_QRTZ_TRIGGER_LOG :调度⽇志表: ⽤于保存XXL-JOB 任务调度的历史信息,如调度结果、执⾏结果、调度⼊参、调度机器和执⾏器等等;- XXL_JOB_QRTZ_TRIGGER_LOGGLUE :任务GLUE ⽇志:⽤于保存GLUE 更新历史,⽤于⽀持GLUE 的版本回溯功能;执⾏模块(执⾏器)负责接收调度请求并执⾏任务逻辑。
XXL-JOB安装、配置、启动、停止教程
XXL-JOB安装、配置、启动、停⽌教程安装xxl-job在下⾯的github链接中下载⾃⼰的版本,本⽂使⽤最新版的2.0.1XXL-JOB 分布式任务调度平台step1:上传执⾏命令rz,上传⽂件包xxl-job-2.0.1.tar.gz到linuxstep2:解压执⾏命令tar xf xxl-job-2.0.1.tar.gz,得到解压⽂件xxl-job-2.0.1;将上⾯的解压⽂件移动到/usr/local/⽬录下;进⼊/usr/local/xxl-job-2.0.1/⽬录下,接下来的所有操作都在该⽬录下;step3:初始化数据库xxl-job⾃带的⽤于⽣成数据库以及各个表的SQL语句的⽂件**tables_xxl_job.sql **在…/xxl-job-2.1.2/doc/db⽬录下直接linux命令⽣成数据库以及表:mysql -uroot -p123456 < doc/db/tables_xxl_job.sql还可以⼿动在对应的Mysql连接上运⾏SQL⽂件⽣成:xxl-job-2.0.1版本的**tables_xxl_job.sql **⽣成的数据库表如下图所⽰:step4:修改xxl-job配置⽂件step4.1:修改调度中⼼配置⽂件application.propertiesvi xxl-job-admin/src/main/resources/application.properties1.web端⼝,如果有冲突,⼀定要更换(本⽂采⽤默认8080)server.port=80802.修改数据库信息spring.datasource.url=jdbc:mysql://deptestxx:3306/xxl-job?Unicode=true&characterEncoding=UTF-8ername=rootspring.datasource.password=password(修改成MySQL密码)3.登录的⽤户名和密码,想改就改不改也⾏(本⽂采⽤默认)ername=adminxxl.job.login.password=123456step4.2:修改logback.xml(配置xxl-job的⽇志路径)设置log.path参数为/usr/local/xxl-job-2.0.1/logs/xxl-job-admin.logvi xxl-job-admin/src/main/resources/logback.xmlstep4.3:修改执⾏器配置⽂件application.propertiesvi xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties1.web 端⼝,如果有冲突,⼀定要更换(本⽂采⽤默认8080)连接地址写IP或者域名都可以server.port=80812.xxl-job地址*“http://address” or “http://address01,http://address02”xxl.job.admin.addresses=http://192.168.8.8:8080/xxl-job-admin3.执⾏器运⾏⽇志⽂件存储磁盘路径xxl.job.executor.logpath=/usr/local/xxl-job-2.0.1/jobhandlerstep4.4:修改logback.xml(配置xxl-job的⽇志路径)设置log.path参数为/usr/local/xxl-job-2.0.1/logs/xxl-job-executor-sample-springboot.logvi xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/logback.xmlstep5:mvn编译mvn package1、如果没有mvn,则需要安装,具体maven安装⽅法见博客下⽂2、maven的安装运⾏依赖Java环境,需要预先安装jdk1.8,具体Java安装⽅法见博客下⽂step6:启动(这⾥启动你要注意改成你的版本)1、启动调度中⼼nohup java -jar xxl-job-admin/target/xxl-job-admin-2.0.1.jar &2、启动执⾏器nohup java -jar xxl-job-executor-samples/xxl-job-executor-sample-springboot/target/xxl-job-executor-sample-springboot-2.0.1.jar & 3、查看守护进程jps -ml | grep xxl-job4、访问webhttp://IP或者域名:8080/xxl-job-admin/step7:停⽌1、查询xxl-job相关的进程的命令,如下:ps -ef | grep xxl-job2、对相关的进程⼀⼀进⾏kill杀死,使⽤命令:kill -9 25822(调度中⼼-进程ID⽰例)kill -9 25929(执⾏器-进程ID⽰例)。
xxljob 参数
xxljob 参数XXLJob参数是一种新型的分布式在线任务调度平台,由XXL Inc.推出,它可以支持不同种类的原生任务调度需求,例如定时任务、轮询任务、执行任务、条件调度任务等。
它可以支持短期调度、中期调度和长期调度,可以用于实现高性能的在线任务处理和在线数据处理,用于满足当今大数据处理在线任务的高性能需求。
XXLJob参数可以用于管理多个(以及其他)应用的任务调度需求,可以有效实现聚合应用任务的自动调度,大大提高了应用性能。
它可以支持job通过架构、服务和应用来联合处理,并且可以对任务按照一定的规则进行调整,从而实现调度灵活性和可重复性。
XXLJob参数采用Restful接口作为数据服务,可以支持灵活连接,调用或执行任务可以通过软件或控制台进行灵活操作,满足业务开发的需求。
它还可以在基于流程引擎的任务处理模式上,支持历史任务的回退,并支持任务的重新发布,从而实现了任务的可重复性。
XXLJob参数同样也支持基于分布式节点的任务处理模式,可以在节点之间实现报表分析,收集任务处理结果;可以支持数据分发、任务分发和结果分发,从而实现了大规模任务的高性能处理。
XXLJob参数可以支持跨系统的任务派发,可以支持任务的实时监控,具备实时反馈和日志收集功能,可以实现实时状态的跟踪记录。
同时,XXLJob具备用户状态的管理功能,实现用户权限的管理与维护,从而保障了任务的安全管理。
XXLJob参数可以支持多种语言的支持,对多种类型的开发语言均支持,满足企业级应用开发的需求,实现任务处理的高效性和可重用性。
它可以实现分布式任务处理的集群控制,可以支持多种数据库的支持,提供及时数据的传输和处理,从而实现在线数据处理的高效性和高可用性。
XXLJob参数可以帮助用户实现高可用性和高性能的在线任务处理,及时处理数据,满足当今大数据处理在线任务的高性能需求。
它可以支持应用的聚合调度,实现自动任务调度,支持多种类型的任务调整,支持任务的重复性,支持分布式任务处理,支持多种语言的支持,以及数据库的支持,为用户的开发任务处理提供了高性能的解决方案。
分布式任务调度平台XXL-JOB快速使用与问题总结
分布式任务调度平台XXL-JOB快速使⽤与问题总结1.XXL-JOB简介XXL-JOB is a lightweight distributed task scheduling framework. It's core design goal is to develop quickly and learn simple, lightweight, and easy to expand. Now, it's already open source, and many companies use it in production environments, real "out-of-the-box".XXL-JOB是⼀个轻量级分布式任务调度平台,其核⼼设计⽬标是开发迅速、学习简单、轻量级、易扩展。
现已开放源代码并接⼊多家公司线上产品线,开箱即⽤。
——引⽤⾃XXL-JOB的GIT项⽬介绍关于XXL-JOB的其他介绍可以,它含有丰富的特性,⽀持分布式和动态任务添加以及权限控制等。
2.搭建XXL-JOB项⽬①下载源码https:///xuxueli/xxl-job/②执⾏SQLxxl-job-2.1.1\xxl-job-2.1.1\doc\db\tables_xxl_job.sql③修改配置### xxl-job, datasourcespring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8ername=rootspring.datasource.password=root_pwdspring.datasource.driver-class-name=com.mysql.jdbc.Driver### xxl-job, access token 秘钥填了下⾯的⼦项⽬要和这个⼀致xxl.job.accessToken=需要注意的是⼦项⽬中的配置地址要和admin中的访问⾸页地址⼀致:### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin④启动项⽬我们⾸选需要启动项⽬中的admin,然后再启动xxl-job-executor-samples下⾯的内容,这⾥我们启动,这⾥⽐较简单的⽅式是通过springboot的例⼦进⾏启动,这也是作者推荐的启动⽅式。
XXL-JOB任务调度
XXL-JOB任务调度⽇常开发中难免会碰到需要开启定时任务处理业务。
这时我们第⼀时间想到的是Spring的Task,但是很不⽅便,这⾥可以列出⼏点: 1.⼀旦需要更改定时任务时间,我们就要打开IDE修改cron表达式; 2.在特殊的情况下代码报错了,我们就要打开Log查看是什么导致的问题; 3.需要很多定时任务去处理业务就要新建多个,突然不想执⾏这个任务了,我们就要再打开IDE注释那些代码。
就特别不好管理。
可能⼜有⼈要说了: 1.我可以⽤Redis进⾏动态修改cron表达式;--------看下⾯代码 2.我写个Aop,只要出现异常了我就记录相关信息;-------- ⽜掰!Aop固然好,但是你觉得真的⽅便了吗? 3.······我就是不闲⿇烦,咋地。
--------打扰了package cn.chenghao.config;import lombok.AllArgsConstructor;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.scheduling.annotation.EnableScheduling;import org.springframework.scheduling.annotation.SchedulingConfigurer;import org.springframework.scheduling.config.ScheduledTaskRegistrar;import org.springframework.scheduling.support.CronTrigger;import javax.annotation.PostConstruct;/*** ⾃定义定时任务** @Author chenghao* @Date 2020/4/14 11:56**/@Configuration@EnableScheduling@AllArgsConstructorpublic class CompleteScheduleConfig implements SchedulingConfigurer {/*** StringRedis模板*/private final StringRedisTemplate stringRedisTemplate;/*** 初始化*/@PostConstructprivate void init() {// redis中不存在则创建stringRedisTemplate.opsForValue().setIfAbsent("cron", "0/3 * * * * ?");}/*** 配置任务*/@Overridepublic void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {// 给定cron表达式,触发Runnable任务scheduledTaskRegistrar.addTriggerTask(() -> {System.out.println("执⾏定时任务中.......");},triggerContext -> {// 获取cron表达式String cron = stringRedisTemplate.opsForValue().get("cron");// 返回执⾏周期return new CronTrigger(cron).nextExecutionTime(triggerContext);});}}!(真的是太⽅便了)----------------------------------好,废话不再多说----------------------------------XXL-JOB地址:概述:XXL-JOB是⼀个分布式任务调度平台,其核⼼设计⽬标是开发迅速、学习简单、轻量级、易扩展。
分布式任务调度平台xxl-job
分布式任务调度平台xxl-job定时任务调度:在某个时间点触发执⾏操作(CURD)。
分布式任务调度平台的使⽤场景:数据同步、交易信息(对账)、清除过期⽤户信息、定期发送报表、消息推送。
传统的定时任务与分布式定时任务的区别?传统的定时任务特征:单点系统(job没有集群)思考:如果job在⾼并发的情况下,导致job服务器宕机之后,这时候应该如何处理?1.定时任务和业务服务放在⽤⼀个jvm中(⼩项⽬)2.⼤型互联⽹公司定时任务代码执⾏与业务执⾏代码服务器都是分开的,都是独⽴的jvm。
3.定时任务服务器是否需要考虑⾼并发情况?需要,因为同⼀时间点可能执⾏多个任务。
间隔执⾏场景不需要,同时执⾏需要考虑⾼并发情况。
4.如果在⾼并发情况下,定时job宕机后,该如何处理(只有⼀台服务器的情况下) ?使⽤⼼跳检测监控⾃动重启、补偿机制,每个任务做⼀个标记。
定时任务在执⾏代码的时候突然报错了,该如何处理?⽇志记录错误,跳过当前错的任务,接着执⾏下⼀个任务。
在使⽤定时job扫描错误⽇志记录,进⾏补偿信息。
分布式定时任务特征:job使⽤集群。
产⽣问题:定时任务打成3个war包放在三个不同服务器上(8080、8081、8082)。
定时任务在每个war包中都是相同的,三台服务器启动之后,定时job会被重复执⾏3遍。
分布式领域中服务器集群的情况下,如何保证job的幂等性?1.使⽤zookeeper实现分布式锁⽅式,不推荐效率低。
2.在配置⽂件中加上打开定时job的开关8080 设置flag=true、8081 设置flag=false、8082设置 flag=false,这种⽅法不属于分布式了属于单点的系统,不推荐。
3.启动的时候使⽤数据库的唯⼀标⽰,不推荐效率低。
4.使⽤分布式任务调度平台xxl-job、Elastric-job(依赖于zk)、TBSchedule。
分布式任务调度平台优点xxl-job1.⽀持集群(保证幂等性问题)、job负载均衡轮询机制。
分布式任务调度平台XXL-JOB本地配置可能遇到的问题和解决方案
分布式任务调度平台XXL-JOB本地配置可能遇到的问题和解决⽅案⼀. 基本概念XXL-JOB是⼀个轻量级分布式任务调度框架,其核⼼设计⽬标是开发迅速、学习简单、轻量级、易扩展。
现已开放源代码并接⼊多家公司线上产品线,开箱即⽤。
⼆. 本地实例配置问题这个地⽅就不做过多赘述了,官⽅⽂档上以及说的很详细。
⽹上的博客也有很多。
接下来主要讲⼀下作者在本地配置运⾏过程中遇到的各种问题。
这⾥作者使⽤的环境1. JDK 1.82. Maven 4.03. Mysql 8.04. 操作系统 Mac os (这⾥是关键,这也是下边各种问题的关键)三. 配置运⾏过程中各种问题及解决⽅案(1)Maven中包的导⼊问题如果你是从Github上直接Git 下的项⽬那么你可能会发现 Maven下你会始终⽆法导⼊⼀些包导致报错。
这主要是因为在xxl-job下的pom.xml `<xxl-rpc.version>1.4.1-SNAPSHOT</xxl-rpc.version>`这⾏代码的缘故,我仔细查看了他的maven发现 **解决⽅案:**这⾥你需要把pom.xml⽂件下的这个配置改成`<xxl-rpc.version>1.4.0</xxl-rpc.version>`在进⾏导⼊问题就会解决。
(2) 在IDEA中启动项⽬是读写权限所造成的各种log⽂件⽆法创建读取问题问题1. XxlJobAdminApplication,如果启动报错xxl- job-admin.log找不到,这⾥我⽤的Mac系统,对于某些⽂件的创建是有读写权限的。
报错信息ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file] - Failed to create parent directories for [/data/applogs/xxl-job/xxl-job-admin.log]XxlJobAdminApplication在启动的应该会⾃动创建这条路径下的所有⽂件,但是因为读写权限的问题,⽆法完成这个过程,所以才会报错。
XXL-Job分布式任务调度
XXL-Job分布式任务调度分布式情况下定时任务会出现哪些问题?分布式集群的情况下,怎么保证定时任务不被重复执⾏分布式定时任务解决⽅案①使⽤zookeeper实现分布式锁缺点(需要创建临时节点、和事件通知不易于扩展)②使⽤配置⽂件做⼀个开关缺点发布后,需要重启③数据库唯⼀约束,缺点效率低④使⽤分布式任务调度平台XXLJOB、Elastric-Job、TBScheduleXXLJOB介绍1、简单:⽀持通过Web页⾯对任务进⾏CRUD操作,操作简单,⼀分钟上⼿;2、动态:⽀持动态修改任务状态、暂停/恢复任务,以及终⽌运⾏中任务,即时⽣效;3、调度中⼼HA(中⼼式):调度采⽤中⼼式设计,“调度中⼼”基于集群Quartz实现,可保证调度中⼼HA;4、执⾏器HA(分布式):任务分布式执⾏,任务"执⾏器"⽀持集群部署,可保证任务执⾏HA;5、任务Failover:执⾏器集群部署时,任务路由策略选择"故障转移"情况下调度失败时将会平滑切换执⾏器进⾏Failover;6、⼀致性:“调度中⼼”通过DB锁保证集群分布式调度的⼀致性, ⼀次任务调度只会触发⼀次执⾏;7、⾃定义任务参数:⽀持在线配置调度任务⼊参,即时⽣效;8、调度线程池:调度系统多线程触发调度运⾏,确保调度精确执⾏,不被堵塞;9、弹性扩容缩容:⼀旦有新执⾏器机器上线或者下线,下次调度时将会重新分配任务;10、邮件报警:任务失败时⽀持邮件报警,⽀持配置多邮件地址群发报警邮件;11、状态监控:⽀持实时监控任务进度;12、Rolling执⾏⽇志:⽀持在线查看调度结果,并且⽀持以Rolling⽅式实时查看执⾏器输出的完整的执⾏⽇志;13、GLUE:提供Web IDE,⽀持在线开发任务逻辑代码,动态发布,实时编译⽣效,省略部署上线的过程。
⽀持30个版本的历史版本回溯。
14、数据加密:调度中⼼和执⾏器之间的通讯进⾏数据加密,提升调度信息安全性;15、任务依赖:⽀持配置⼦任务依赖,当⽗任务执⾏结束且执⾏成功后将会主动触发⼀次⼦任务的执⾏, 多个⼦任务⽤逗号分隔;16、推送maven中央仓库: 将会把最新稳定版推送到maven中央仓库, ⽅便⽤户接⼊和使⽤;17、任务注册: 执⾏器会周期性⾃动注册任务, 调度中⼼将会⾃动发现注册的任务并触发执⾏。
利用XXL-JOB实现灵活控制的分片处理
利⽤XXL-JOB实现灵活控制的分⽚处理本⽂讲述了⼀种利⽤ XXL-JOB 来进⾏分⽚任务处理的⽅法,另外加⼊对执⾏节点数的灵活控制。
场景现在⼀张数据表⾥有⼤量数据需要某个服务端应⽤来处理,要求:1. 能够并⾏处理;2. 能够较灵活地控制并⾏任务数量。
3. 压⼒较均衡地分散到不同的服务器节点;思路因为需要并⾏处理同⼀张数据表⾥的数据,所以⽐较⾃然地想到了分⽚查询数据,可以利⽤对 id 取模的⽅法进⾏分⽚,避免同⼀条数据被重复处理。
根据第 1、2 点要求,本来想通过对线程池的动态配置来实现,但结合第 3 点来考虑,服务器节点数量有可能会变化,节点之间相互⽆感知⽆通信,⾃⼰在应⽤内实现⼀套调度机制可能会很复杂。
如果有现成的独⽴于这些服务器节点之外的调度器就好了——顺着这个思路,就想到了已经接⼊的分布式任务调度平台 XXL-JOB,⽽在阅读其后发现「分⽚⼴播 & 动态分⽚」很贴合这种场景。
⽅案1. 利⽤ XXL-JOB 的路由策略「分⽚⼴播」来调度定时任务;2. 通过任务参数传⼊执⾏任务节点数量;3. 定时任务逻辑⾥,根据获取到的分⽚参数、执⾏任务节点数量,决策当前节点是否需要执⾏,分⽚查询数据并处理:如果分⽚序号 > (执⾏任务节点数量 - 1),则当前节点不执⾏任务,直接返回;否则,取分⽚序号和执⾏任务节点数量作为分⽚参数,查询数据并处理。
这样,我们可以实现灵活调度 [1, N] 个节点并⾏执⾏任务处理数据。
主要代码⽰例JobHandler ⽰例:@XxlJob("demoJobHandler")public void execute() {String param = XxlJobHelper.getJobParam();if (StringUtils.isBlank(param)) {XxlJobHelper.log("任务参数为空");XxlJobHelper.handleFail();return;}// 执⾏任务节点数量int executeNodeNum = Integer.valueOf(param);// 分⽚序号int shardIndex = XxlJobHelper.getShardIndex();// 分⽚总数int shardTotal = XxlJobHelper.getShardTotal();if (executeNodeNum <= 0 || executeNodeNum > shardTotal) {XxlJobHelper.log("执⾏任务节点数量取值范围[1,节点总数]");XxlJobHelper.handleFail();return;}if (shardIndex > (executeNodeNum - 1)) {XxlJobHelper.log("当前分⽚ {} ⽆需执⾏", shardIndex);XxlJobHelper.handleSuccess();return;}shardTotal = executeNodeNum;// 分⽚查询数据并处理process(shardIndex, shardTotal);XxlJobHelper.handleSuccess();}分⽚查询数据⽰例:select field1, field2from table_namewhere ...and mod(id, #{shardTotal}) = #{shardIndex}order by id limit #{rows};进⼀步思考1. 如果需要更⼤的并发量,需要有⼤于应⽤节点数量的任务并⾏,如何处理?两种思路:通过任务参数传⼊⼀个并发数,单个节点在处理任务时,将查询到的数据按这个数字进⾏再分⽚,交由线程池并⾏处理;配置 M 个定时任务,指定相同的 JobHandler,给它们编号 0、1、2...M,并将定时任务编号和 M 这两个数,由任务参数传⼊,定时任务逻辑⾥,先根据分⽚参数、定时任务编号、M,重新计算出新的分⽚参数,如分⽚序号 = (分⽚序号 * M) + 定时任务编号,分⽚总数 = 分⽚总数 * M,再查询数据并处理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
———————————————————————————————— 作者:
———————————————————————————————— 日期:
《分布式任务调度平台XXL-JOB》手册
文档历史记录
版本
日期
描述
作者
V1.0
2018-03-27
xuya
1:简介
XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展,XXL-JOB是基于开源Quartz调度内核的、为方便企业调度场景而开源的一款实用的调度工具。自带任务配置页面,任务监控,分布式执行器等功能。
2:安装
下载地址(最新1.9版本迭代中,可选择稳定版本1.8.2下载)
码云:
3:配置
解压下载文件,得到如下文件结构,
- /doc :文档资料
- /db :“调度数据库”建表脚本
- /xxl-job-admin :调度中心,项目源码
- /xxl-job-core :公共Jar依赖
- /xxl-job-executor-samples :执行器,Sample示例项目
步骤一:调度中心配置
文件地址:
/xxl-job/xxl-job-admin/src/main/resources/xxl-job-admin.properties,数据库连接地址与上面所创建数据库的地址要一致。
步骤二:部署项目
可将项目编译的war包部署到tomcat中,现将war部署到192.168.110.2服务器上将war包复制到/root/apቤተ መጻሕፍቲ ባይዱche-tomcat-7.0.78/webapps目录下。启动tomcat,游览器输入
xxl-job-executor:执行器Sample示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器)
:xxl-job-executor-sample-spring:Spring版本,通过Spring容器管理执行器,比较通用;ﻫ:xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执行器;
3.1数据库准备
使用mysql新建数据库xxl-job,导入下载文件夹中/doc/db/tables_xxl_job.sql文件,应生成16张表,如图所示。
3.2源码准备
按照maven格式将源码导入IDE,使用maven进行编译即可,源码结构如下
xxl-job-admin:调度中心
xxl-job-core:公共依赖
:xxl-job-executor-sample-jfinal:JFinal版本,通过JFinal管理执行器;
:xxl-job-executor-sample-nutz:Nutz版本,通过Nutz管理执行器;
3.3部署准备
3.3.1配置部署“调度中心”
调度中心项目:xxl-job-admin
作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。