《分布式任务调度平台XXL-JOB》手册

合集下载

开源分布式任务调度平台Cuckoo-Schedule

开源分布式任务调度平台Cuckoo-Schedule

开源分布式任务调度平台Cuckoo-Schedule1 概述1.1 平台概述 Cuckoo-Schedule对调度模块与执⾏模块进⾏解耦,调度模块⽀持集部署、任务分组、任务依赖、权限管理、邮件告警、调度⽇志记录等功能,并提供WEB页⾯对任务进⾏管理,⽀持任务实时调度情况的查看、变更以及任务⼿动执⾏回溯、暂停等管理功能。

执⾏模块⽀持客户端切⾯、脚本代码,实现客户端任务的零代码侵⼊。

1.2 功能介绍l 调度集群 Cuckoo-Schedule的分布式策略是以数据库作为边界资源的并发策略,每个集群节点遵守相同的调度规范,集群节点可动态扩容、删除。

l 任务依赖 Cuckoo-Schedule⽀持任务的依赖于触发,从⽽使得任务执⾏有先后顺序。

任务可以定时触发,也可以通过上级任务触发。

同时⼀个任务的执⾏可以依赖多个任务的完成状态。

l 任务分类 Cuckoo-Schedule既可以⽀持⽇切任务(每⽇执⾏任务),有可以⽀持数据流任务(按时间间隔执⾏),⽇切任务依赖组执⾏的⽇切业务时间在执⾏时保持⼀致,数据流任务依赖住执⾏的数据开始时间戳和结束时间戳保持⼀致。

例如: 有任务A/B/C任务,如果依赖组是⽇切任务,那么这三个任务有相同的业务执⾏⽇期。

如果依赖组是数据流任务,那么这三个任务有相同的开始时间戳和结束时间戳。

l 任务分⽚ 针对数据量超⼤的任务,需要制定分⽚策略,将任务拆解成多个⼩任务通过不同的客户端执⾏,达到提供任务调度速率的⽬标。

Cuckoo-Schedule可以针对任务层级设置任务执⾏参数,作为参数传递给客户端并进⾏任务分⽚执⾏。

l 任务执⾏查看 Cuckoo-Schedule⽀持任务执⾏⽇志情况查看,也⽀持任务执⾏依赖关系执⾏情况查看,便于任务执⾏异常情况下排查问题原因。

l 任务重跑 当任务执⾏失败后,⽀持⼿⼯对任务进⾏重跑操作,重跑是可以选择是否执⾏触发任务。

l 任务暂停 当客户端某个系统需要上线或者重启操作时,可以通过控制台⼿⼯暂停客户端任务的调度,避免由于服务重启的情况下,造成任务失败。

基于XXL-JOB的分布式定时任务研究和应用

基于XXL-JOB的分布式定时任务研究和应用

ComputerEraNo.620220引言随着业务场景变得越来越复杂,定时任务在程序设计中存在广泛应用。刚开始企业发展规模较小,业务范围有限,所以定时任务的需求也很少,这时定时任务可以直接在单台服务器节点上进行部署,而且基本不需要对这些任务进行控制和管理,任务也能顺利执行[1]。当然,这种方式会导致单点故障的问题,所以企业一般就会采用多台服务器节点进行备份来保证任务的成功执行。而随着企业的发展规模越来越大,业务逻辑愈加复杂,导致定时任务的需求量也在不断攀升。此时单个服务器节点已经无法承载众多定时任务同时执行,需要部署多台服务器节点来执行这些定时任务。而定时任务的调度问题也随之而来,首先

是定时任务的路由分配问题,即:应该由哪台服务器执行这个任务。其次是在分布式部署的情况下,定时任务的调度信息,执行状态的监控如何获取。由于同时部署在多台集群机器上,因此到达指定的定时时间时,多台机器上的定时器可能会同时启动,造成重复数据或者程序异常等问题。为了解决上述问题,市面上也诞生出了多种分布式事务解决方案,其中XXL-JOB便是其中之一。

1分布式定时任务对比1.1XXL-JOB简介XXL-JOB将调度行为抽象形成“调度中心”公共平台,而平台自身并不承担业务逻辑,“调度中心”负

DOI:10.16644/j.cnki.cn33-1094/tp.2022.06.019基于XXL-JOB的分布式定时任务研究和应用

郑祥1,2,顾丹鹏1,2,陈肖勇1,2

(1.中国电建集团华东勘测设计研究院有限公司,浙江杭州311122;2.浙江华东工程数字技术有限公司)摘要:随着微服务架构成为主流,单体定时任务由于单点故障等问题渐渐无法满足平时的业务需求。分布式定时任务通过集群的方式进行管理调度,大大降低了开发和维护成本。通过分布式部署,保证了系统的高可用,伸缩性,提高了容错率。XXL-JOB拥有优秀的可视化界面,使用方便灵活高效。对比市场上的主流定时任务框架,基于XXL-JOB给出了一种分布式定时任务的解决方案,并在石坞实验室项目进行了部署和使用。关键词:微服务;分布式;定时任务;XXL-JOB中图分类号:TP399文献标识码:A文章编号:1006-8228(2022)06-80-03

SpringBoot整合Xxl-job实现定时任务的全过程

SpringBoot整合Xxl-job实现定时任务的全过程

SpringBoot整合Xxl-job实现定时任务的全过程⽬录前⾔⼀、部署调度中⼼1、项⽬下载2、初始化数据3、修改properties配置⽂件⼆、部署SpringBoot项⽬1、引⼊依赖2、创建配置类3、修改配置⽂件4、创建执⾏器5、启动SpringBoot项⽬三、通过调度中⼼进⾏任务调度1、添加执⾏器2、添加任务3、任务调度中⼼发起任务调度四、⼩结总结前⾔XXL-JOB是⼀个分布式任务调度平台,其核⼼设计⽬标是开发迅速、学习简单、轻量级、易扩展。

现已开放源代码并接⼊多家公司线上产品线,开箱即⽤。

如果是单机并且定时任务不多的情况,可以选择Timer注解@Scheduled或者Cron⼯具类等⽅式来实现,但是这有个缺点,那就是定时任务会写死在代码中,⼀旦启动,就不能暂停或者修改。

如果修改的话,整个还项⽬要重新编译,这属实⾮常的⿇烦。

本篇⽂章将会介绍如何通过xxl-job来实现任务的调度⼀、部署调度中⼼1、项⽬下载下⾯是调度中⼼代码的gitee地址,可以colon到本地/xuxueli0323/xxl-job2、初始化数据在下载好的项⽬中的doc/db⽬录下有⼀个tables_xxl_job.sql⽂件,先放到⾃⼰的数据库中执⾏,其实就是初始化好调度中⼼需要的表结构和数据3、修改properties配置⽂件⼆、部署SpringBoot项⽬1、引⼊依赖<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.2.0</version></dependency>2、创建配置类@Configurationpublic class XxlJobConfig {private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);@Value("${xxl.job.admin.addresses}")private String adminAddresses;@Value("${xxl.job.executor.appname}")private String appName;@Value("${xxl.job.executor.ip}")private String ip;@Value("${xxl.job.executor.port}")private int port;@Value("${xxl.job.accessToken}")private String accessToken;@Value("${xxl.job.executor.logpath}")private String logPath;@Value("${xxl.job.executor.logretentiondays}")private int logRetentionDays;@Beanpublic XxlJobSpringExecutor xxlJobExecutor() {(">>>>>>>>>>> xxl-job config init.");XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppname(appName);xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(accessToken);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);return xxlJobSpringExecutor;}}3、修改配置⽂件xxl:job:admin:addresses: http://127.0.0.1:8080/xxl-job-admin #部署的调度中⼼的urlexecutor:appname: xxl-job-volunteer-executor #执⾏器的名字ip:port: 9999 #调度中⼼调⽤执⾏器时使⽤的端⼝logpath: /data/apploggs/xxl-job/jobhandler #⽇志路径logretentiondays: 30 #⽇志保留天数accessToken:4、创建执⾏器@Componentpublic class XxlJobSample {// myDemoJob是任务的名字,也是Spring中bean的名字@XxlJob("myDemoJob")public ReturnT<String> myDemoJob(String value) {System.out.println("myDemoJob:定时任务触发:" + value);return ReturnT.SUCCESS;}}5、启动SpringBoot项⽬启动成功后会看到下⾯两⾏⽇志信息,可以看到成功连接到了调度中⼼然后注册了将要被调度任务>>>>>>>>>>> xxl-job register jobhandler success, name:myDemoJob, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@1f94dd63[class ponent.XxlJobSample#myDemoJob] >>>>>>>>>>> xxl-job remoting server start success, nettype = class com.xxl.job.core.server.EmbedServer, port = 9999三、通过调度中⼼进⾏任务调度1、添加执⾏器输⼊配置⽂件中配置的appName,名称可以随意2、添加任务新增调度任务查看调度任务3、任务调度中⼼发起任务调度在SpringBoot项⽬中可以看到控制台输出如下信息:2022-01-16 11:54:05.039 INFO 7836 --- [Pool-1148366645] c.xxl.job.core.executor.XxlJobExecutor : >>>>>>>>>>> xxl-job regist JobThread success, jobId:7, handler:com.xxl.job.core.handler.impl.MethodJobHandler@1f94dd63[class pone myDemoJob:定时任务触发:testParam2022-01-16 11:55:38.059 INFO 7836 --- [ Thread-22] com.xxl.job.core.thread.JobThread : >>>>>>>>>>> xxl-job JobThread stoped, hashCode:Thread[Thread-22,10,main]四、⼩结⾄此,SpringBoot整合Xxl-job就完成了,刚才的⽰例代码其实对于原来的项⽬还是有⼀定的侵⼊性的,上⾯仅仅演⽰了BEAN运⾏模式,说⽩了就是调⽤加了@XxlJob的⽅法。

分布式定时任务的详细实现

分布式定时任务的详细实现

分布式定时任务的详细实现分布式定时任务是指将定时任务分散在多个节点上执行,以实现高可用、高性能和高可靠性的任务调度。

以下是一个分布式定时任务的详细实现步骤:1. 确定任务调度平台:首先需要选择一个适合的分布式任务调度平台,例如Elastic Job、XXL-Job等,这些平台提供了丰富的分布式任务调度功能,如任务调度、任务分配、任务监控等。

2. 部署任务调度平台:根据实际需求,在多个节点上部署任务调度平台,确保各个节点能够正常运行并相互通信。

3. 配置任务调度规则:在任务调度平台上,根据业务需求配置任务调度规则,包括任务的执行时间、执行周期、执行策略等。

4. 开发任务调度程序:根据任务调度规则,开发相应的任务调度程序,并将程序部署到各个节点上。

任务调度程序需要实现任务接收、任务执行、任务结果返回等功能。

5. 任务分配与调度:在分布式环境下,需要实现任务分配与调度功能。

任务分配可以根据任务的优先级、任务的负载情况等因素进行动态分配,确保任务能够被高效地执行。

任务调度需要根据任务分配的结果,将任务调度到相应的节点上执行。

6. 任务监控与告警:在任务执行过程中,需要实时监控任务的执行情况,如任务的执行时间、执行结果等,并对任务的异常情况进行告警通知,以便及时处理问题。

7. 任务重试与容错:在任务执行过程中,可能会遇到各种异常情况,如节点故障、网络异常等。

为了保证任务的高可靠性,需要实现任务重试与容错功能,确保任务能够在出现异常时自动恢复或切换到其他节点执行。

8. 任务结果处理:任务执行完成后,需要对任务的结果进行处理,如任务成功、任务失败等情况。

任务结果处理需要将任务执行的结果记录到数据库中,以便后续的任务调度和分析。

9. 任务优化与扩展:在任务执行过程中,需要根据任务的执行情况进行优化和调整,如调整任务的执行时间、增加任务执行节点等,以提高任务的执行效率和可靠性。

10. 任务安全管理:为了保证任务的安全性,需要实现任务安全管理功能,如任务权限管理、任务访问控制等,确保任务不会被非法访问或篡改。

Xxl-job服务端源码解析

Xxl-job服务端源码解析

Xxl-job服务端源码解析⼀、启动配置类 Xxl-job的服务端是以springboot构架为基础打包运⾏的,启动类为XxlJobAdminApplication,那么就先从他的配置类XxlJobAdminConfig 看起。

@Componentpublic class XxlJobAdminConfig implements InitializingBean, DisposableBean {private static XxlJobAdminConfig adminConfig = null;public static XxlJobAdminConfig getAdminConfig() {return adminConfig;}// 调度器实例private XxlJobScheduler xxlJobScheduler;@Overridepublic void afterPropertiesSet() throws Exception {adminConfig = this;// 实例化定时器xxlJobScheduler = new XxlJobScheduler();//初始化xxlJobScheduler.init();}// 销毁⽅法@Overridepublic void destroy() throws Exception {xxlJobScheduler.destroy();}···}InitializingBean、DisposableBean前⾯已经解释过了,我们直接看XxlJobScheduler的init⽅法public void init() throws Exception {// 1、国际化initI18n();// 2、监控客户端注册JobRegistryMonitorHelper.getInstance().start();// 3、执⾏失败的job监控JobFailMonitorHelper.getInstance().start();// 4、初始化了两个线程池,⼀快⼀慢JobTriggerPoolHelper.toStart();// 5、执⾏结果报表统计定时清理xxl_job_log表的数据JobLogReportHelper.getInstance().start();// 6、启动调度线程JobScheduleHelper.getInstance().start();(">>>>>>>>> init xxl-job admin success.");}1、国际化主要是通过I18nUtil加载国际化资源⽂件,这块实现充分利⽤spring的 EncodedResource和PropertiesLoaderUtils.loadProperties2、监控客户端执⾏器的注册 之前看客户端源码的时候也讲过了,每过30秒客户端执⾏器会发送⼀次注册请求,服务端接收到请求也会更新xxl_job_registry表。

SpringBlade开发手册说明书

SpringBlade开发手册说明书

Home欢迎使用SpringBlade,以下为快速导航。

1.SpringBlade开发手册2.SpringBlade会员计划3.开源版与商业版功能对比Release V3.7.0JDK 1.8+license Apache 2Spring Cloud2021Spring Boot 2.7Author Small Chill Copyright@BladeX若需要咨询商业版事宜,请添加我们的官方微信咨询哦功能开源版 ->点击前往商业版 ->点击前往1. 适用范围可用于个人学习使用,小微企业免费的架构方案可用于企业商业化架构,从小型到大型系统的完整架构方案2. 生产能力功能较少,需要花费时间与人力进行二开才能作为商业化架构功能完善,经过生产检验,很多功能开箱即用,可以直接进行商业化开发3. 更新频率更新频率低,一到二月更新一次版本,问题响应较慢更新频率高,随时会将新功能、bug修复推送至dev分支,问题响应较快4. 组件封装组件化封装较少,满足基本项目需求,若有新的需求还需自行开发集成组件化封装较多,提供更多demo集成,适应多种场景需求,提高开发效率5. 数据库种类仅支持Mysql 支持Mysql、PostgreSQL、Oracle、SqlServer、达梦、崖山,支持更多场景选择6. 鉴权方案采用自研Token方案,拓展受限采用Oauth2+自研Token方案,拓展集成灵活7. 多租户系统只有最基础的多租户功能对租户插件深度定制,支持多租户背景、域名、账号额度、过期时间等配置8. 多租户数据隔离只支持单数据库字段隔离支持数据库与租户一对一、一对多、多对多等灵活的模式,符合中国式租户需求9. 多租户对象存储只有简易的七牛、阿里云集成,无法动态配置集成七牛、阿里云、腾讯云、minio等对象存储,支持租户在线配置到私有库10. 多租户短信服务暂无短信封装集成七牛、阿里云、腾讯云、云片等短信服务,支持租户在线配置到私有库11. 动态数据权限暂无数据权限高度灵活,提供注解+Web可视化两种配置方式,Web配置无需重启直接生效12. 动态接口权限暂无接口权限高度灵活,提供注解+Web可视化两种配置方式,Web配置无需重启直接生效13. 全能代码生成器暂无全能代码生成器支持自定义模型、模版 、业务建模,在线配置,不再为重复工作发愁14. 钉钉监控告警暂无钉钉监控告警增强监控,微服务上下线集成钉钉告警,提高应对风险能力15. 分布式任务调度暂无分布式任务调度极简集成xxl-job,支持分布式任务调度功能16. 分布式日志模块暂无分布式日志模块集成7.x版本ELK,支持分布式日志追踪功能17. 消息队列暂无消息队列完美集成Kafka、Rabbit、SpringCloud Stream等消息队列18. Dubbo暂无Dubbo集成极简集成Dubbo最新版,给微服务远程调用增加新的解决方案19. 令牌状态可配暂无令牌状态可配增强JWT,Token默认无状态,增加配置可保存至redis实现有状态模式20. API报文加密暂无API报文加密支持API全局报文加密,提高系统的安全等级,大大降低系统损失的风险21. 工作流暂无工作流深度定制SpringCloud分布式场景的Flowable工作流,为复杂流程保驾护航22. Prometheus监控暂无Prometheus监控集成Prometheus全方位监控体系23. 移动端架构暂无移动端架构提供基于UniApp的跨平台移动端架构24. 规则引擎暂无规则引擎集成LiteFlow轻量级规则引擎,业务解耦更轻松25. 应用市场暂无应用市场商业用户可将自己开发的产品上架至应用市场,拓展BladeX生态圈开源版与商业版功能对比BladeX与Avue深度合作,联合版可视化数据大屏解决方案授权:26. 数据大屏暂无数据大屏前往体验。

大数据“分布式调度框架”大集合

大数据“分布式调度框架”大集合

大数据“分布式调度框架”大集合1、什么是分布式任务调度?任务调度是指基于给定的时间点,给定的时间间隔或者给定执行次数自动的执行任务。

任务调度是是操作系统的重要组成部分,而对于实时的操作系统,任务调度直接影响着操作系统的实时性能。

任务调度涉及到多线程并发、运行时间规则定制及解析、线程池的维护等诸多方面的工作。

WEB服务器在接受请求时,会创建一个新的线程服务。

但是资源有限,必须对资源进行控制,首先就是限制服务线程的最大数目,其次考虑以线程池共享服务的线程资源,降低频繁创建、销毁线程的消耗;然后任务调度信息的存储包括运行次数、调度规则以及运行数据等。

一个合适的任务调度框架对于项目的整体性能来说显得尤为重要。

2、常见的任务调度框架有哪些?我们在实际的开发工作中,或多或少的都会用到任务调度这个功能。

常见的分布式任务调度框架有:cronsun、Elastic-job、saturn、lts、TBSchedule、xxl-job等。

2.1cronsuncrontab是Linux系统里面最简单易用的定时任务管理工具,在Linux上由crond来周期性的执行指令列表,执行的任务称为cron job,多个任务就称为crontab。

crontab任务调度指令的基本格式为:* * * * * command分时日月周命令但是时间久了之后会发现,crontab会存在一些问题:1.大量的crontab分散在各台服务器,带来了很高的维护成本;2.任务没有按时执行,过了很长的时间才能发现,需要重试或者排查;3.crontab分散在很多集群上,需要一台一台的去查看日志;4.crontab存在单点问题,对于不能重复执行的定时任务很伤脑;……因此非常需要一个集中管理定时任务的系统,于是就有了cronsun。

cronsun是一个分布式任务系统,单个节点和Linux机器上的contab近似,是为了解决多台Linux机器上crontab任务管理不方便的问题,同时提供了任务高可用的支持(当某个节点死机的时候可以自动调整到正常的节点执行)。

powerjob 工作流使用案例

powerjob 工作流使用案例

一、PowerJob 简介PowerJob 是一款分布式的、高可用的、易扩展的调度和流程工作流引擎,它基于开源的微服务框架 SpringCloud 和分布式调度框架 xxl-job 进行开发。

PowerJob 为各种业务场景提供了完善的任务调度和工作流的解决方案,使得应用系统更加稳定、易扩展和高效。

二、PowerJob 工作流使用案例以下将给出几个使用 PowerJob 工作流的案例,展示 PowerJob 在不同领域的应用场景。

1. 订单处理流程假设一个电商评台的订单处理流程如下:1)接收订单;2)检查库存;3)生成物流订单;4)物流发货;5)订单完成。

在传统的电商评台中,订单处理流程往往需要人工干预,会导致效率低下、易出错。

而使用 PowerJob 工作流,可以将订单处理流程进行自动化,提高处理效率,降低错误率,并且根据订单的实际情况灵活调整流程。

2. 数据处理流程假设一个大数据评台需要进行数据处理,并且需要按照一定的流程顺序进行:1)获取数据;2)清洗数据;3)分析数据;4)存储数据。

在传统的数据处理中,这些流程往往需要手动触发和监控,效率低下且容易出现问题。

使用 PowerJob 工作流,可以将数据处理流程进行自动化,根据数据量的大小自动调整并行度,提高处理效率,减少人工干预的成本。

3. 财务审批流程假设一个企业的财务审批流程如下:1)员工提交报销申请;2)主管审批;3)财务审批;4)出纳打款;5)报销完成。

在传统的财务审批流程中,往往需要通过一轮轮的传递审批单来完成整个流程,效率低下且容易出现丢失审批环节的情况。

使用PowerJob 工作流,可以将整个财务审批流程进行自动化,提高整体的审批效率,减少流程中的环节失误。

4. 微服务调度假设一个分布式微服务架构中,需要一个统一的任务调度中心,承担调度各个微服务中的任务。

使用 PowerJob 可以将调度逻辑集中到一个统一的地方,方便管理和监控各个微服务的任务调度情况,提高整体的调度效率。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《分布式任务调度平台XXL-JOB》手册
文档历史记录
版本 日期 描述
作者

2018-03-27 xuya
目录
1:简介 ...................................................................................................... 错误!未定义书签。
2:安装 ...................................................................................................... 错误!未定义书签。
3:配置 ...................................................................................................... 错误!未定义书签。
数据库准备 ............................................................................................ 错误!未定义书签。
源码准备 ................................................................................................ 错误!未定义书签。
部署准备 ................................................................................................ 错误!未定义书签。
配置部署“调度中心” .................................................................. 错误!未定义书签。
配置部署“执行器项目” ................................................................... 错误!未定义书签。
4:使用 ...................................................................................................... 错误!未定义书签。
步骤一:新建任务 ................................................................................ 错误!未定义书签。
步骤二:“GLUE模式(Java)”任务开发 ............................................... 错误!未定义书签。
步骤三:触发执行 ................................................................................ 错误!未定义书签。
步骤四:查看日志 ................................................................................ 错误!未定义书签。
5:总结 ...................................................................................................... 错误!未定义书签。
1:简介
XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、
轻量级、易扩展,XXL-JOB是基于开源 Quartz 调度内核的、为方便企业调度场景而开源的
一款实用的调度工具。自带任务配置页面,任务监控,分布式执行器等功能。

2:安装

下载地址 (最新版本迭代中,可选择稳定版本下载)
码云: xuxueli0323/xxl-job/tree/

3:配置

解压下载文件,得到如下文件结构,
- /doc :文档资料
- /db :“调度数据库”建表脚本
- /xxl-job-admin :调度中心,项目源码
- /xxl-job-core :公共Jar依赖
- /xxl-job-executor-samples :执行器,Sample示例项目

数据库准备
使用 mysql 新建数据库xxl-job , 导入下载文件夹中 /doc/db/ 文件,应生成16张表,
如图所示。
源码准备
按照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管理执行器;

部署准备

配置部署“调度中心”
调度中心项目:xxl-job-admin
作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。

步骤一:调度中心配置
文件地址:
/xxl-job/xxl-job-admin/src/main/resources/,数据库连接地址与上面所创建数据库的地址
要一致。
步骤二:部署项目
可将项目编译的war包部署到tomcat中,现将war部署到

务器上将war包复制到 /root/ 目录下。启动tomcat,游览器输入

配置部署“执行器项目”
“执行器”项目:xxl-job-executor-sample-spring (提供多种版本执行器供选择,现以Spring
版本为例,可直接使用,也可以参考其并将现有项目改造成执行器)
作用:负责接收“调度中心”的调度并执行;可直接部署执行器,也可以将执行器集成到
现有业务项目中。

步骤一:maven依赖
确认pom文件中引入了 "xxl-job-core" 的maven依赖;
步骤二:执行器配置
文件地址:
/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/ 如
tomcat端口占用,可将改成9888

步骤三:执行器组件配置
文件地址:
/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/
步骤四:部署执行器项目
同“调度中心”war一致复制到 /root/ 目录下,启动tomcat

4:使用
本示例以新建一个 “GLUE模式(Java)” 运行模式的任务为例。( “GLUE模式(Java)”的执
行代码托管到调度中心在线维护,相比“Bean模式任务”需要在执行器项目开发部署上线,
更加简便轻量)
前提:请确认“调度中心”和“执行器”项目已经成功部署并启动;

步骤一:新建任务
登录调度中心,点击下图所示“新建任务”按钮,新建示例任务。然后,参考下面截图中
任务的参数配置,点击保存,Cron表达式,例如0 0/1 * * * 每一分钟执行一次。
步骤二:“GLUE模式(Java)”任务开发
请点击任务右侧 “GLUE” 按钮,进入 “GLUE编辑器开发界面” ,见下图。“GLUE模式
(Java)” 运行模式的任务默认已经初始化了示例任务代码,即打印“XXL-JOB, Hello World.
2018-03-27/xuya”

步骤三:触发执行
请点击任务右侧 “执行” 按钮,可手动触发一次任务执行
步骤四:查看日志
请点击任务右侧 “日志” 按钮,可前往任务日志界面查看任务日志。 在任务日志界面
中,可查看该任务的历史调度记录以及每一次调度的任务调度信息、执行参数和执行信息。
运行中的任务点击右侧的“执行日志”按钮,可进入日志控制台查看实时执行日志。

在日志控制台,可以Rolling方式实时查看任务在执行器一侧运行输出的日志信息,实
时监控任务进度;

5:总结
XXL-JOB将调度行为抽象形成“调度中心”公共平台,而平台自身并不承担业务逻辑,“调
度中心”负责发起调度请求。将任务抽象成分散的JobHandler,交由“执行器”统一管理,“执
行器”负责接收调度请求并执行对应的JobHandler中业务逻辑。因此,“调度”和“任务”两部
分可以相互解耦,提高系统整体稳定性和扩展性。

附上XXL-JOB架构图:

相关文档
最新文档