《分布式任务调度平台某某L-JOB》手册簿

合集下载

XXL-JOB架构图

XXL-JOB架构图
XXL-JOB架构图 v1.1
调度中心
任务池
宴会商户头图绑定JOB
婚宴默认搜索排序跑分JOB
……
调度器A【block】
调度器B【block】
调度器C【active】
调度日志
执行器
调度队列
调度请求
调度请求
……
任务执行【业务逻辑】
XXL-JOB架构图 v1.3
调度中心
调度池
执行器地址
调度日志 / GLUE日志
日志管理
调度日志
Rolling日志
GLUE版本日志
……
其他
运行报表
失败告警
任务依赖
……
注册线程
执行器服务
调度结果(queue)
JobHandler
任务线程
调度请求(queue)
自研RPC(xxl-rpc)
执行日志(Log文件)
回调线程
Rolling日志(实时)
日志服务
XXL-JOB架构图 v2.0.0
其他
运行报表
失败告警
任务依赖
……
自动注册
执行器服务(jetty)
调度结果(queue)
JobHandler
任务线程
调度请求(queue)
自研RPC
执行日志(Log文件)
回调线程
Rolling日志(实时)
日志服务(jetty)
XXL-JOB架构图 v1.8
调度中心
数据中心
注册服务(API)
任务管理
执行器
调度请求(queue)
自研RPC
执行日志(Log文件)
回调线程
Rolling日志(实时)
日志服务(jetty)

任务调度详细设计说明书

任务调度详细设计说明书

MainService为主线程,用于监控SCH_SchduleControl任务调度控制表中的批量指令,同时调用该批量。

发起和管理每个任务线程的启动和中断,以及插件包的加载、日志、配置等信息初始化。

TaskSchedulePool为任务调度的线程池,由主线程创建,每个批量启动后就会创建一个TaskScheduleControl线程来处理这个任务的具体执行内容。

TaskScheduleControl线程实现类,每个单独的任务创建一个实例。

用于控制一个任务中每个作业的执行,按依赖关系先后顺序调用作业。

作业的状态更新和读取通过调用JobExchangeComponent类实现;作业的具体执行通过Quartz框架提供的线程池来实现。

JobExchangeComponent类实现作业中的数据结构组建和更新,当作业执行状态变更时,更新相应的数据结构和知识库中的内容;读取当前要处理的作业队列。

Quartz 封装第三方框架,提供异步作业执行的线程池,用于定时执行指定作业。

JobExecute提供通用作业执行接口,同时提供监听器,当作业执行完成后,返回执行结果到JobExchangeComponent。

通过实现通用作业接口来调用各种功能。

3.1 任务调度服务主模块3.1.1系统初始化载入系统的配置项的数据,包括数据库驱动、连接参数;服务器标识、任务扫描频率、插件目录、是否写事件序列表等。

根据插件目录,载入插件类。

数据库访问实例化。

任务线程池初始化。

Service TaskScheduleControl 创建新批量任务JobExchangeComponent 获取作业队列返回可执行的作业列表更新作业状态为运行中JobItem TaskPersistDB 创建作业更新组件返回作业更新对象初始化作业列表返回持久化更新对象更新作业状态为运行中创建并执行作业返回执行结果更新作业状态为成功或失败更新作业树的状态更新作业状态为成功或失败重复读取作业队列检查新任务循环检查判断树状态,确定是退出还是继续JobListener执行结束作业开始执行3.2.3 数据结构定义。

分布式任务调度elastic-job

分布式任务调度elastic-job

分布式任务调度elastic-jobelastic-job主要的设计理念是⽆中⼼化的分布式定时调度框架,思路来源于Quartz的基于数据库的⾼可⽤⽅案。

但数据库没有分布式协调功能,所以在⾼可⽤⽅案的基础上增加了弹性扩容和数据分⽚的思路,以便于更⼤限度的利⽤分布式服务器的资源。

1. 主要功能a) 分布式:重写Quartz基于数据库的分布式功能,改⽤Zookeeper实现注册中⼼。

b) 并⾏调度:采⽤任务分⽚⽅式实现。

将⼀个任务拆分为n个独⽴的任务项,由分布式的服务器并⾏执⾏各⾃分配到的分⽚项。

c) 弹性扩容缩容:将任务拆分为n个任务项后,各个服务器分别执⾏各⾃分配到的任务项。

⼀旦有新的服务器加⼊集群,或现有服务器下线,elastic-job将在保留本次任务执⾏不变的情况下,下次任务开始前触发任务重分⽚。

d) 集中管理:采⽤基于Zookeeper的注册中⼼,集中管理和协调分布式作业的状态,分配和监听。

外部系统可直接根据Zookeeper的数据管理和监控elastic-job。

e) 定制化流程型任务:作业可分为简单和数据流处理两种模式,数据流⼜分为⾼吞吐处理模式和顺序性处理模式,其中⾼吞吐处理模式可以开启⾜够多的线程快速的处理数据,⽽顺序性处理模式将每个分⽚项分配到⼀个独⽴线程,⽤于保证同⼀分⽚的顺序性,这点类似于kafka 的分区顺序性。

2. 其他功能a) 失效转移:弹性扩容缩容在下次作业运⾏前重分⽚,但本次作业执⾏的过程中,下线的服务器所分配的作业将不会重新被分配。

失效转移功能可以在本次作业运⾏中⽤空闲服务器抓取孤⼉作业分⽚执⾏。

同样失效转移功能也会牺牲部分性能。

b) Spring命名空间⽀持:elastic-job可以不依赖于spring直接运⾏,但是也提供了⾃定义的命名空间⽅便与spring集成。

c) 运维平台:提供web控制台⽤于管理作业。

3. ⾮功能需求a) 稳定性:在服务器⽆波动的情况下,并不会重新分⽚;即使服务器有波动,下次分⽚的结果也会根据服务器IP和作业名称哈希值算出稳定的分⽚顺序,尽量不做⼤的变动。

开源分布式任务调度平台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》手册

《分布式任务调度平台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快速使用与问题总结

分布式任务调度平台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的例⼦进⾏启动,这也是作者推荐的启动⽅式。

elastic-job表

elastic-job表

elastic-job表Elastic-job是一款分布式任务调度解决方案,它主要由两部分组成:lite和cloud。

其中lite是一个轻量级分布式任务调度框架,提供了分片、错过重执行、分布式监听等常用功能;cloud则是一个基于Spring Cloud技术栈的分布式任务调度平台,提供了任务配置、任务监控、任务日志等功能。

在lite中,主要涉及到以下表:1. job_config表:存储作业的配置信息,包括作业名称、作业类型、执行作业的cron表达式等。

2. job_instance表:存储作业的实例信息,包括作业实例id、作业名称、执行时间、分片总数等。

3. job_execution表:存储作业的执行信息,包括执行id、作业实例id、当前分片项等。

4. job_status_trace_log表:存储作业的执行轨迹信息,包括作业实例id、执行时间、分片项、触发事件等。

在cloud中,主要涉及到以下表:1. app_config表:存储应用的配置信息,包括应用名称、应用类型、应用地址等。

2. job_config表:存储作业的配置信息,与lite中的job_config表类似。

3. job_execution_log表:存储作业的执行日志信息,包括作业实例id、任务开始时间、任务结束时间、任务状态等。

4. job_task_info表:存储作业的分片信息,包括作业实例id、分片项、分片状态等。

5. job_task_execution_log表:存储分片任务的执行日志信息,包括分片项、任务开始时间、任务结束时间、任务状态等。

以上是Elastic-job涉及到的主要表及其作用。

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

《分布式任务调度平台XXL-JOB》手册
目录
1:简介 (3)
2:安装 (3)
3:配置 (3)
3.1数据库准备 (3)
3.2源码准备 (4)
3.3部署准备 (5)
3.3.1 配置部署“调度中心” (5)
3.3.2 配置部署“执行器项目” (7)
4:使用 (8)
步骤一:新建任务 (9)
步骤二:“GLUE模式(Java)”任务开发 (9)
步骤三:触发执行 (10)
步骤四:查看日志 (10)
5:总结 (10)
1:简介
XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展,XXL-JOB是基于开源 Quartz 调度内核的、为方便企业调度场景而开源的一款实用的调度工具。

自带任务配置页面,任务监控,分布式执行器等功能。

2:安装
下载地址(最新1.9版本迭代中,可选择稳定版本1.8.2下载)
码云: https:///xuxueli0323/xxl-job/tree/v1.8.2
3:配置
解压下载文件,得到如下文件结构,
- /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-admin/src/main/resources/xxl-job-admin.properties,数据库连接地址与上面所创建数据库的地址要一致。

步骤二:部署项目
可将项目编译的war包部署到tomcat中,现将war部署到192.168.110.2 服务器上将war包复制到 /root/apache-tomcat-7.0.78/webapps 目录下。

启动tomca t,游览器输入http://192.168.110.2:8080/xxl-job-admin/
3.3.2 配置部署“执行器项目”
“执行器”项目: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/r esources/xxl-job-executor.properties 如tomcat端口占用,可将xxl.job.executor.port改成9888
步骤三:执行器组件配置
文件地址:
/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/r esources/applicationcontext-xxl-job.xml
步骤四:部署执行器项目
同“调度中心”war一致复制到 /root/apache-tomcat-7.0.78/webapps 目录下,启动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架构图:
实用文档
大全。

相关文档
最新文档