《分布式任务调度平台XXL-JOB》手册
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快速使⽤与问题总结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的任务调度系统[发明专利]
(19)国家知识产权局(12)发明专利申请(10)申请公布号 (43)申请公布日 (21)申请号 202210021289.X(22)申请日 2022.01.10(71)申请人 广东联合电子服务股份有限公司地址 510000 广东省广州市天河区体育西路189号15楼(72)发明人 黄强 李昊淼 张佳松 (74)专利代理机构 广州市越秀区哲力专利商标事务所(普通合伙) 44288专利代理师 徐鹏(51)Int.Cl.G06F 9/48(2006.01)G06F 21/31(2013.01)G06F 21/62(2013.01)(54)发明名称基于XXL-JOB的任务调度系统(57)摘要本申请公开了一种基于XXL ‑JOB的任务调度系统,涉及计算机技术,包括:Web模块,用于响应浏览器的访问请求,并向浏览器返回可交互界面;任务调度模块,用于根据Web模块采集的针对所述可交互界面的操作指令进行响应,所述任务调度模块至少用于调度针对数据库的操作任务;其中,所述可交互界面的输入框配置有校验程序,所述校验程序用于校验所述输入框的输入数据是否为SQL指令,当所述输入数据为SQL指令时,拦截该输入数据。
本申请实施例可以在采用XXL ‑JOB实现数据库任务调度的场景下,通过防注入措施保障系统得到安全。
权利要求书1页 说明书4页 附图1页CN 114528077 A 2022.05.24C N 114528077A1.一种基于XXL ‑JOB的任务调度系统,其特征在于,包括:Web模块,用于响应浏览器的访问请求,并向浏览器返回可交互界面;任务调度模块,用于根据Web模块采集的针对所述可交互界面的操作指令进行响应,所述任务调度模块至少用于调度针对数据库的操作任务;其中,所述可交互界面的输入框配置有校验程序,所述校验程序用于校验所述输入框的输入数据是否为SQL指令,当所述输入数据为SQL指令时,拦截该输入数据。
2.根据权利要求1所述的基于XXL ‑JOB的任务调度系统,其特征在于,所述可交互界面中包括任务调度列表和所述任务调度列表中各任务项的信息和操作按钮,所述任务调度模块根据针对所述操作按钮的操作执行进行响应。
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.任务管理中添加新的任务添加完成后,可再后⾯对该任务进⾏操作。
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执⾏原理调度平台、执⾏器、任务管理,相关解释如下:调度平台:统⼀管理任务调度的平台,负责转发任务到对应的执⾏服务器。
分布式任务调度平台XXL-JOB
分布式任务调度平台XXL-JOB《分布式任务调度平台XXL-JOB》[TOCM][TOC]⼀、简介1.1 概述XXL-JOB是⼀个分布式任务调度平台,其核⼼设计⽬标是开发迅速、学习简单、轻量级、易扩展。
现已开放源代码并接⼊多家公司线上产品线,开箱即⽤。
1.2 社区交流1.3 特性1、简单:⽀持通过Web页⾯对任务进⾏CRUD操作,操作简单,⼀分钟上⼿;2、动态:⽀持动态修改任务状态、启动/停⽌任务,以及终⽌运⾏中任务,即时⽣效;3、调度中⼼HA(中⼼式):调度采⽤中⼼式设计,“调度中⼼”⾃研调度组件并⽀持集群部署,可保证调度中⼼HA;4、执⾏器HA(分布式):任务分布式执⾏,任务"执⾏器"⽀持集群部署,可保证任务执⾏HA;5、注册中⼼: 执⾏器会周期性⾃动注册任务, 调度中⼼将会⾃动发现注册的任务并触发执⾏。
同时,也⽀持⼿动录⼊执⾏器地址;6、弹性扩容缩容:⼀旦有新执⾏器机器上线或者下线,下次调度时将会重新分配任务;7、路由策略:执⾏器集群部署时提供丰富的路由策略,包括:第⼀个、最后⼀个、轮询、随机、⼀致性HASH、最不经常使⽤、最近最久未使⽤、故障转移、忙碌转移等;8、故障转移:任务路由策略选择"故障转移"情况下,如果执⾏器集群中某⼀台机器故障,将会⾃动Failover切换到⼀台正常的执⾏器发送调度请求。
9、阻塞处理策略:调度过于密集执⾏器来不及处理时的处理策略,策略包括:单机串⾏(默认)、丢弃后续调度、覆盖之前调度;10、任务超时控制:⽀持⾃定义任务超时时间,任务运⾏超时将会主动中断任务;11、任务失败重试:⽀持⾃定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进⾏重试;其中分⽚任务⽀持分⽚粒度的失败重试;12、任务失败告警;默认提供邮件⽅式失败告警,同时预留扩展接⼝,可⽅便的扩展短信、钉钉等告警⽅式;13、分⽚⼴播任务:执⾏器集群部署时,任务路由策略选择"分⽚⼴播"情况下,⼀次任务调度将会⼴播触发集群中所有执⾏器执⾏⼀次任务,可根据分⽚参数开发分⽚任务;14、动态分⽚:分⽚⼴播任务以执⾏器为维度进⾏分⽚,⽀持动态扩容执⾏器集群从⽽动态增加分⽚数量,协同进⾏业务处理;在进⾏⼤数据量业务操作时可显著提升任务处理能⼒和速度。
基于XXL-JOB分布式任务调度系统的路由策略[发明专利]
(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号 (43)申请公布日 (21)申请号 202111626396.7(22)申请日 2021.12.28(71)申请人 苏州小棉袄信息技术股份有限公司地址 215000 江苏省苏州市东吴北路299号1901室(1909、1910、1911)(72)发明人 乐涛 肖书恒 李天阁 靳涛涛 刘肖 冯志远 金涛 韩阳 (74)专利代理机构 绍兴市越兴专利事务所(普通合伙) 33220代理人 高林(51)Int.Cl.G06F 9/48(2006.01)G06F 9/54(2006.01)(54)发明名称基于XXL-JOB分布式任务调度系统的路由策略(57)摘要本发明涉及分布式任务调度技术领域,尤其涉及一种基于XXL ‑JOB分布式任务调度系统的路由策略,包括以下步骤:各执行器自身根据任务流控规则判断当前是否可参与新任务;可执行新任务的执行器与调度中心之间确认系统标识,调度中心选定其中一台执行器为任务调度机器;任务调度机器接收任务参数并执行;优势在于:基于XXL ‑JOB分布式任务调度平台第10种分片广播路由策略,通过广播模式广播任务,所有任务流控规则验证通过的执行器机器均会尝试拉取任务,根据业务逻辑最终仅有一台机器能完整的完成系统标记身份确认以及任务调度确认,降低了出现“抢占式”业务执行逻辑时的负载风险。
权利要求书1页 说明书4页 附图1页CN 114265681 A 2022.04.01C N 114265681A1.一种基于XXL ‑JOB分布式任务调度系统的路由策略,其特征在于,包括以下步骤:S10.各执行器自身根据任务流控规则判断当前是否可参与新任务;S20.可执行新任务的执行器与调度中心之间确认系统标识,调度中心选定其中一台执行器为任务调度机器;S30. 任务调度机器接收任务参数并执行。
2.如权利要求1所述的一种基于XXL ‑JOB分布式任务调度系统的路由策略,其特征在于,所述任务流控规则包括执行器的正在执行的任务数、待重试任务数、队列等待任务数和延时任务数,在所述步骤S10中,执行器根据任务流控规则判断自身健康情况和负载情况,若执行器属于健康且负载未超阈值,则可参与新的调度任务。
基于XXL-JOB实现分布式调度任务的方法及系统与相关技术
本技术公开了一种基于XXL JOB实现分布式调度任务的方法及系统,属于计算机软件开发技术领域。
本技术的基于XXL JOB实现分布式调度任务的方法配置部署调度中心,统一管理任务调度平台上调度任务,触发调度执行,并提供任务管理平台;配置部署执行器项目,接收调度中心的调度并执行;在可视化界面配置执行器及新建任务。
该技术的基于XXL JOB实现分布式调度任务的方法能够减轻服务器压力,提高系统的运行效率,在确保各用户数据间隔的同时能完成调度任务,具有很好的推广应用价值。
权利要求书1.一种基于XXL-JOB实现分布式调度任务的方法,其特征在于:该方法配置部署调度中心,统一管理任务调度平台上调度任务,触发调度执行,并提供任务管理平台;配置部署执行器项目,接收调度中心的调度并执行;在可视化界面配置执行器及新建任务。
2.根据权利要求1所述的基于XXL-JOB实现分布式调度任务的方法,其特征在于:具体包括以下步骤:S1、初始化调度数据,创建数据库;S2、配置调度中心;S3、配置执行器项目,配置项目中的配置文件;S4、新增执行器;S5、新建任务;S6、编写代码来实现执行调度任务的执行器。
3.根据权利要求2所述的基于XXL-JOB实现分布式调度任务的方法,其特征在于:步骤S1中,创建名为XXL-JOB的数据库,在XXL-JOB数据库中创建XXL-JOB使用的表。
4.根据权利要求3所述的基于XXL-JOB实现分布式调度任务的方法,其特征在于:步骤S2包括:配置XXL-JOB中的配置文件,配置下访问的端口和路径,然后配置数据库连接信息,再可以选择的配置发送邮件信息。
5.根据权利要求4所述的基于XXL-JOB实现分布式调度任务的方法,其特征在于:步骤S4中,登录任务调度中心系统,点击执行器管理菜单,点击新增管理器,保存即可。
6.根据权利要求5所述的基于XXL-JOB实现分布式调度任务的方法,其特征在于:步骤S5中,登录任务调度中心系统,点击任务管理菜单中的新增任务,进入新增页面后,配置创建的执行器。
(xxl_jobquartz):XXL_JOB对比Quartz一决高下!
(xxl_jobquartz):XXL_JOB对⽐Quartz⼀决⾼下!概述: XXL-JOB是⼀个轻量级分布式任务调度平台,其核⼼设计⽬标是开发迅速、学习简单、轻量级、易扩展。
现已开放源代码并接⼊多家公司线上产品线,开箱即⽤。
易信 (⽹易)等等.... Quartz作为开源作业调度中的佼佼者,是作业调度的⾸选。
集群环境中Quartz采⽤API的⽅式对任务进⾏管理,Quartz存在以下问题:Quartz的不⾜:问题⼀:调⽤API的的⽅式操作任务,不⼈性化;问题⼆:需要持久化业务QuartzJobBean到底层数据表中,系统侵⼊性相当严重。
问题三:调度逻辑和QuartzJobBean耦合在同⼀个项⽬中,这将导致⼀个问题,在调度任务数量逐渐增多, 同时调度任务逻辑逐渐加重的情况加,此时调度系统的性能将⼤⼤受限于业务;问题四:quartz底层以“抢占式”获取DB锁并由抢占成功节点负责运⾏任务,会导致节点负载悬殊⾮常⼤; ⽽XXL-JOB通过执⾏器实现“协同分配式”运⾏任务,充分发挥集群优势,负载各节点均衡。
XXL-JOB弥补了quartz的上述不⾜之处。
XXL-JOB特性:简单:⽀持通过Web页⾯对任务进⾏CRUD操作,操作简单,⼀分钟上⼿动态:⽀持动态修改任务状态、启动/停⽌任务,以及终⽌运⾏中任务,即时⽣效调度中⼼HA(中⼼式):调度采⽤中⼼式设计,“调度中⼼”基于集群Quartz实现并⽀持集群部署,可保证调度中⼼HA执⾏器HA(分布式):任务分布式执⾏,任务"执⾏器"⽀持集群部署,可保证任务执⾏HA注册中⼼: 执⾏器会周期性⾃动注册任务, 调度中⼼将会⾃动发现注册的任务并触发执⾏。
同时,也⽀持⼿动录⼊执⾏器地址弹性扩容缩容:⼀旦有新执⾏器机器上线或者下线,下次调度时将会重新分配任务路由策略:执⾏器集群部署时提供丰富的路由策略,包括:第⼀个、最后⼀个、轮询、随机、⼀致性HASH、最不经常使⽤、最近最久未使⽤、故障转移、忙碌转移等故障转移:任务路由策略选择"故障转移"情况下,如果执⾏器集群中某⼀台机器故障,将会⾃动Failover切换到⼀台正常的执⾏器发送调度请求。
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是⼀个分布式任务调度平台,其核⼼设计⽬标是开发迅速、学习简单、轻量级、易扩展。
介绍一种很好用的任务调度平台
介绍⼀种很好⽤的任务调度平台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 的版本回溯功能;执⾏模块(执⾏器)负责接收调度请求并执⾏任务逻辑。
xxljob分片原理
xxljob分片原理XXLJob是一款分布式作业调度系统,它可以实现分片作业,可以有效地提高工作效率,解决大型复杂作业调度问题。
本文将详细介绍XXLJob分片原理,带领大家了解XXLJob分片调度技术。
1、XXLJob分片介绍XXLJob分片,也称分片调度,是一种用于对工作进行分片的调度技术。
它可以将一个大型的或者复杂的作业拆分成多个工作片段,每一个片段都可以单独调度和执行,从而实现工作的并行处理。
XXLJob分片主要用于批量数据处理和其他计算任务,它可以高效地处理大量数据和高容量任务,降低工作量和完成任务的时间。
XXLJob分片调度技术支持多种作业类型,如实时作业、定时作业、周期性作业等,它的主要特点是将单个作业拆分成多个片段,支持多种数据源,提供可靠的作业调度服务,支持多台机器调度,可以实现跨机器的分布式作业处理,分片数量可配置,支持拆分结果反馈,进程安全性等。
2、XXLJob分片原理XXLJob分片原理可以分为两部分:拆分原理和调度原理。
拆分原理:在XXLJob分片原理中,拆分作业是指将一个大型的或者复杂的作业拆分成多个片段,每一个片段可以单独调度和执行,从而实现作业的并行处理。
XXLJob拆分原理基于数据类型,由数据源提供数据,不同的数据源拆分算法也不同,例如,如果数据源是数据库,可以通过计算每个分片范围的数据量来实现拆分;而如果数据源是文件,则可以通过计算文件大小以及分片数量来实现拆分。
调度原理:在XXLJob分片原理中,调度原理指的是将作业拆分成多个片段后,如何对片段进行调度和执行。
XXLJob调度原理分为三种模式:调度模式、执行模式和结果反馈模式。
调度模式:即在调度系统中根据作业参数进行调度,调度系统可以根据作业参数的不同分配不同的调度机器,从而实现跨机器分布式作业处理。
执行模式:即根据调度结果,在调度机器上执行作业。
调度机器可以根据片段数量进行并发执行,从而实现分片作业的并行处理,在整个作业执行完后,调度机器还可以将每个片段的执行结果进行汇总,完成最终调度结果的收集和处理。
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⽰例)。
分布式任务调度平台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、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:简介 (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(任务调度中心)-反弹getshell
XXL-JOB(任务调度中⼼)-反弹getshell
XXL-JOB(任务调度中⼼)-反弹getshell
XXL-JOB漏洞原理:
XXL-JOB是⼀个轻量级分布式任务调度平台,⽀持通过web页⾯对任务进⾏操作,基于Java-spring boot框架开发,利⽤Maven依赖编译好,开箱即⽤。
如果XXL-JOB任务调度中⼼后台使⽤了弱密码,则可以在后台查看到⼀些敏感信息,可通过新增任务来反弹shell。
漏洞环境:
受害机:fofaXXL-JOB平台弱⼝令可进⼊,有时间也可以⾃⼰搭建⼀个玩玩
服务器:⽕线平台的信使⼯具(⽤于接收反弹shell,类似于vps)
操作过程:
1. 使⽤fofa搜索XXL-JOB资产
2. 弱⼝令登录账号:admin 密码:123456(XXL-JOB的默认账号、密码)
3. 点击任务管理、新增⼀个执⾏任务,配置如下(运⾏模式选择shell,cron是linux定时任务,如下0时0分0秒执⾏⼀次):
4. 进⼊GLUE⾯板,写⼊执⾏的脚本命令。
随意命名备注名称,保存并关闭
5. 服务器监听shell,受害机执⾏任务
6. 返回shell到服务器
修复建议
1. 将服务平台放置内⽹,或者隐藏端⼝
2. 将密码设置为强密码
3. 开源项⽬,有条件可以在登录⼝设置验证,防⽌爆破情况发⽣。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.3
3.3.1
调度中心项目:xxl-job-admin
作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。
步骤一
文件地址:
/xxl-job/xxl-job-admin/src/main/resources/xxl-job-admin.properties,数据库连接地址与上面所创建数据库的地址要一致。
作用:负责接收“调度中心”的调度并执行;可直接部署执行器,也可以将执行器集成到现有业务项目中。
步骤一
确认pom文件中引入了"xxl-job-core"的maven依赖;
步骤二
文件地址:
/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/xxl-job-executor.properties如tomcat端口占用,可将xxl.job.executor.port改成9888
在日志控制台,可以Rolling方式实时查看任务在执行器一侧运行输出的日志信息,实时监控任务进度;
5
XXL-JOB将调度行为抽象形成“调度中心”公共平台,而平台自身并不承担业务逻辑,“调度中心”负责发起调度请求。将任务抽象成分散的JobHandler,交由“执行器”统一管理,“执行器”负责接收调度请求并执行对应的JobHandler中业务逻辑。因此,“调度”和“任务”两部分可以相互解耦,提高系统整体稳定性和扩展性。
步骤三:执行器组件配置
文件地址:
/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/applicationcontext-xxl-job.xml
步骤四:部署执行器项目
同“调度中心”war一致复制到/root/apache-tomcat-7.0.78/webapps目录下,启动tomcat
2
下载地址(最新1.9版本迭代中,可选择稳定版本1.8.2下载)
码云:
3
解压下载文件,得到如下文件结构,
- /doc :文档资料
- /db :“调度数据库”建表脚本
- /xxl-job-admin :调度中心,项目源码
- /xxl-job-core :公共Jar依赖
- /xxl-job-executor-samples :执行器,Sample示例项目
《分布式任务调度平台XXL-JOB》手册
文档历史记录2018-03-27
xuya
1
XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展,XXL-JOB是基于开源Quartz调度内核的、为方便企业调度场景而开源的一款实用的调度工具。自带任务配置页面,任务监控,分布式执行器等功能。
步骤二
可将项目编译的war包部署到tomcat中,现将war部署到192.168.110.2服务器上将war包复制到/root/apache-tomcat-7.0.78/webapps目录下。启动tomcat,游览器输入
3.3.2
“执行器”项目:xxl-job-executor-sample-spring (提供多种版本执行器供选择,现以Spring版本为例,可直接使用,也可以参考其并将现有项目改造成执行器)
附上XXL-JOB架构图:
步骤二
请点击任务右侧“GLUE”按钮,进入“GLUE编辑器开发界面”,见下图。“GLUE模式(Java)”运行模式的任务默认已经初始化了示例任务代码,即打印“XXL-JOB, Hello World. 2018-03-27/xuya”
步骤三
请点击任务右侧“执行”按钮,可手动触发一次任务执行
步骤四
请点击任务右侧“日志”按钮,可前往任务日志界面查看任务日志。在任务日志界面中,可查看该任务的历史调度记录以及每一次调度的任务调度信息、执行参数和执行信息。运行中的任务点击右侧的“执行日志”按钮,可进入日志控制台查看实时执行日志。
:xxl-job-executor-sample-spring:Spring版本,通过Spring容器管理执行器,比较通用;
:xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执行器;
:xxl-job-executor-sample-jfinal:JFinal版本,通过JFinal管理执行器;
4
本示例以新建一个“GLUE模式(Java)”运行模式的任务为例。(“GLUE模式(Java)”的执行代码托管到调度中心在线维护,相比“Bean模式任务”需要在执行器项目开发部署上线,更加简便轻量)
前提:请确认“调度中心”和“执行器”项目已经成功部署并启动;
步骤一
登录调度中心,点击下图所示“新建任务”按钮,新建示例任务。然后,参考下面截图中任务的参数配置,点击保存,Cron表达式,例如0 0/1 * * * ? 每一分钟执行一次。
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示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器)