介绍一种很好用的任务调度平台
2019-08-16 09:19:47来源:博客园 阅读 ()
介绍一种很好用的任务调度平台
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张表
- 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的版本回溯功能;
所有表(若想详细了解可以查看文档):
架构设计
设计思想
“调度中心”负责发起调度请求。
“执行器”负责接收调度请求并执行对应的JobHandler中业务逻辑。
系统组成
调度模块(调度中心)
负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块;
支持可视化、简单且动态的管理调度信息,包括任务新建,更新,删除,GLUE开发和任务报警等,所有上述操作都会实时生效,同时支持监控调度结果以及执行日志,支持执行器Failover。执行模块(执行器)
负责接收调度请求并执行任务逻辑。任务模块专注于任务的执行等操作,开发和维护更加简单和高效;
接收“调度中心”的执行请求、终止请求和日志请求等。主要分为GLUE模式(java)、BEAN模式,查看(任务详解)
GLUE模式(java)
? 任务以源码方式维护在调度中心,支持通过Web IDE在线更新,实时编译和生效,因此不需要指定JobHandler。
BEAN模式:
? 需要继承
IJobHandler
类开发,在源码找到模板,根据模板开发。并在调度中心中,新建调度任务?
一次完整的任务调度通讯流程
- 1、“调度中心”向“执行器”发送http调度请求: “执行器”中接收请求的服务,实际上是一台内嵌jetty服务器,默认端口9999;
- 2、“执行器”执行任务逻辑;
- 3、“执行器”http回调“调度中心”调度结果: “调度中心”中接收回调的服务,是针对执行器开放一套API服务;
任务详解
配置属性详细说明:
执行器:任务的绑定的执行器,任务触发调度时将会自动发现注册成功的执行器, 实现任务自动发现功能;
路由策略:当执行器集群部署时,提供丰富的路由策略,包括:
- FIRST(第一个):固定选择第一个机器;
- LAST(最后一个):固定选择最后一个机器;
- ROUND(轮询):;
- RANDOM(随机):随机选择在线的机器;
- 等等
运行模式:
- BEAN模式:任务以JobHandler方式维护在执行器端;需要结合 "JobHandler" 属性匹配执行器中任务;
- GLUE模式(Java):任务以源码方式维护在调度中心;该模式的任务实际上是一段继承自IJobHandler的Java类代码并 "groovy" 源码方式维护,它在执行器项目中运行,可使用@Resource/@Autowire注入执行器里中的其他服务;是一段java代码
JobHandler:运行模式为 "BEAN模式" 时生效,对应执行器中新开发的JobHandler类“@JobHandler”注解自定义的value值;
阻塞处理策略:调度过于密集执行器来不及处理时的处理策略;
子任务:每个任务都拥有一个唯一的任务ID(任务ID可以从任务列表获取),当本任务执行结束并且执行成功时,将会触发子任务ID所对应的任务的一次主动调度。
BEAN模式
任务逻辑以JobHandler的形式存在于“执行器”所在项目中,开发流程如下:
步骤一:执行器项目中,开发JobHandler:
安装下面代码的模板即可开发执行器。
步骤二:调度中心,新建调度任务
运行模式选中 "BEAN模式",JobHandler属性填写任务注解“@JobHandler”中定义的值
为方便用户参考与快速实用,示例执行器内原生提供多个Bean模式任务Handler,可以直接配置实用。
- demoJobHandler:简单示例任务,任务内部模拟耗时任务逻辑,用户可在线体验Rolling Log等功能;
- shardingJobHandler:分片示例任务,任务内部模拟处理分片参数,可参考熟悉分片任务;
- httpJobHandler:通用HTTP任务Handler;业务方只需要提供HTTP链接即可,不限制语言、平台;
- commandJobHandler:通用命令行任务Handler;业务方只需要提供命令行即可;如 “pwd”命令;
GLUE模式(java)
任务以源码方式维护在调度中心,支持通过Web IDE在线更新,实时编译和生效,因此不需要指定JobHandler。
步骤一:调度中心,新建调度任务:
步骤二:开发任务代码:
issxxl-job 中的一些参数
调度中心地址:http://10.202.117.55:8080/xxl-job-admin-1.9.0/jobinfo
调度中心有两条BEAN模式调用:
- BEAN模式:tranShipPointHandler(使用http发送post请求)
- BEAN模式:branchScheduleHandler(使用http发送post请求)
2 操作指南
配置执行器
点击按钮 "+新增执行器" ,可新增执行器
AppName: 是每个执行器集群的唯一标示AppName, 执行器会周期性以AppName为对象进行自动注册。可通过该配置自动发现注册成功的执行器, 供任务调度时使用;
名称: 执行器的名称,
排序: 执行器的排序, 系统中需要执行器的地方,如任务新增, 将会按照该排序读取可用的执行器列表;
注册方式:调度中心获取执行器地址的方式;
? 自动注册:执行器自动进行执行器注册,调度中心通过底层注册表可以动态发现执行器机器地址;
? 手动录入:人工手动录入执行器的地址信息,多地址逗号分隔,供调度中心使用;
机器地址:"注册方式"为"手动录入"时有效,支持人工维护执行器的地址信息;
其他操作
新建任务、编辑任务、编辑GLUE代码、启动、停止任务、手动触发一次调度,查看调度日志、删除执行日志
用户管理
进入 "用户管理" 界面,可查看和管理用户信息;
目前用户分为两种角色:
- 管理员:拥有全量权限,支持在线管理用户信息,为用户分配权限,权限分配粒度为执行器;
- 普通用户:仅拥有被分配权限的执行器,及相关任务的操作权限;
3 快速开发
任务调度中心源码结构
我们使用到的是Spring-boot版本。
配置部署调度中心
调度中心项目:xxl-job-admin
作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。
步骤一:调度中心配置:
地址:/xxl-job/xxl-job-admin/src/main/resources/xxl-job-admin.properties
详细配置文档中有,主要包含调度中心数据库连接的配置、报警邮箱的配置、登陆账号的配置
步骤二:部署项目
项目运行后,访问地址http://localhost:8080/xxl-job-admin,该地址执行器将会使用到,作为回掉地址。登陆后的界面如下。
至此“调度中心”部署成功。
配置部署“执行器”
“执行器”项目:xxl-job-executor-sample-springboot
作用:负责接收“调度中心”的调度并执行;可直接部署执行器,也可以将执行器集成到现有业务项目中。
步骤一:maven依赖
确认pom文件中引入了“xxl-job-core”的maven依赖;
步骤二:执行器配置
配置地址:
/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties
执行器配置,配置内容说明:
### 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
在我们自己的项目中,调度中心部署地址在下行,源码中的调度中心没有用。
xxl.job.admin.addresses=http://10.202.117.55:8080/xxl-job-admin-1.9.0
主要了解这一个点,其他的可以查看文档。
步骤三:执行器组件配置
配置文件地址:
/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java
步骤四:部署执行器项目
xxl-job-executor-sample-springboot:项目编译打包成springboot类型的可执行JAR包,命令启动即可;
至此“执行器项目”部署结束。
开发第一个任务“Hello World”
本示例以新建一个 “GLUE模式(Java)” 运行模式的任务为例。( “GLUE模式(Java)”的执行代码托管到调度中心在线维护,相比“Bean模式任务”需要在执行器项目开发部署上线,更加简便轻量)
前提:请确认“调度中心”和“执行器”项目已经成功部署并启动;
步骤一:新建任务:
步骤二:“GLUE模式(java)”任务开发:
“GLUE模式(Java)” 运行模式的任务实际上是一段继承自IJobHandler的Java类代码,它在执行器项目中运行,可使用@Resource/@Autowire注入执行器里中的其他服务,详细介绍请查看第三章节
步骤三:触发执行:
点击任务右侧 “执行” 按钮,可手动触发一次任务执行(通常情况下,通过配置Cron表达式进行任务调度出发)。
步骤四:查看日志:
请点击任务右侧 “日志” 按钮,可前往任务日志界面查看任务日志。运行中的任务点击右侧的“执行日志”按钮,可进入日志控制台查看实时执行日志。
在日志控制台,可以实时监控任务进度:
原文链接:https://www.cnblogs.com/sean-zeng/p/11096520.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 代理项 Surrogate 2020-06-11
- 与JAVA集合相遇 2020-06-11
- Java笔记:集合 2020-06-10
- 今天来介绍java 各版本的新特性,一篇文章让你了解 2020-06-10
- Java抽象类 2020-06-03
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash