拓展阅读:开源|宜信开源微服务任务调度平台SIA
序言
近来宜信开源微服务任务调度平台SIA-TASK,SIA-TASK属于分布式的任务调度平台,使用上去简单便捷,特别容易入手,布署搭建好SIA-TASK任务调度平台以后,编撰TASK后配置JOB进行调度,从而实现整个调度流程。本文新建了JOB示例,该JOB关联了前后级联的两个TASK,(后置TASK)和(前置TASK),主要探讨一个JOB如何关联配置两个级联TASK,以及该JOB是怎样通过SIA-TASK实现任务调度,最终实现对两个TASK执行器的调用。
拓展阅读:
开源|宜信开源微服务任务调度平台SIA—TASK
宜信开源|分布式任务调度平台SIA-TASK的构架设计与运行流程
一、根据布署文档搭建任务调度平台
源码地址:
官方文档:
任务调度平台主要由任务编排中心、任务调度中心以及ZK和DB等第三方服务构成,搭建SIA-TASK任务调度平台须要的主要工作包括:
1.MySQL的搭建及按照建表句子建表
2.安装
3.SIA-TASK后端项目打包及布署
4.任务编排中心(sia-task-)布署
5.任务调度中心(sia-task-)布署
从上clone代码库房并下载源码后,可依照SIA-TASK布署手册,搭建SIA-TASK任务调度平台并启动任务平台,详见SIA-TASK布署手册()
搭建好SIA-TASK任务调度平台后,下一步就是TASK执行器实例的编撰啦。
二、根据开发文档编撰启动TASK执行器实例
按照SIA-TASK开发手册,编撰了两个TASK示例,(后置TASK)和(前置TASK),具体开发规则见SIA-TASK开发手册(),TASK示例关键配置即代码在下文有详尽展示与介绍。
该示例为项目,而且须要通过POM文件引入SIA-TASK的执行器关键依赖包sia-task-来实现task执行器的手动抓取,首先须要将SIA-TASK源码中的sia-task-包用mvn命令打包为jar包安装至本地库房,SIA-TASK源码中的sia-task-包如右图示:
之后就可以进行示例的编撰,示例主要包括以下几部份:
2.1配置POM文件关键依赖
com.sia sia-task-hunter1.0.0
2.2配置文件主要配置项
# 项目名称(必须) spring.application.name: onlinetask-demo # 应用端口号(必须) server.port: 10086 # zookeeper地址(必须) zooKeeperHosts: *.*.*.*:2181,*.*.*.*:2181,*.*.*.*:2181 # 是否开启 AOP 切面功能(默认为true) spring.aop.auto: true # 是否开启 @OnlineTask 串行控制(如果使用则必须开启AOP功能)(默认为true)(可选) spring.onlinetask.serial: true
2.3编撰TASK执行器主要代码
@Controller public class OpenTestController { @OnlineTask(description = "success,无入参",enableSerial=true) @RequestMapping(value = "/success-noparam", method = { RequestMethod.POST }, produces = "application/json;charset=UTF-8") @CrossOrigin(methods = { RequestMethod.POST }, origins = "*") @ResponseBody public String taskOne() { Mapinfo = new HashMap (); info.put("result", "success-noparam"); info.put("status", "success"); System.out.println("调用taskOne任务成功"); return JSONHelper.toString(info); } @OnlineTask(description = "success,有入参",enableSerial=true) @RequestMapping(value = "/success-param", method = { RequestMethod.POST }, produces = "application/json;charset=UTF-8") @CrossOrigin(methods = { RequestMethod.POST }, origins = "*") @ResponseBody public String taskTwo(@RequestBody String json) { Map info = new HashMap (); info.put("result", "success-param"+"入参是:"+json); info.put("status", "success"); System.out.println("调用taskTwo任务成功"); return JSONHelper.toString(info); } }
2.4当编撰完TASK执行器实例后,启动该执行器所在进程
启动日志如右图:
日志表明该进程正常启动,但是TASK执行器信息正常上传至ZK当中,
观察TASK管理界面,如图示:
从图中可知,TASK已同步至数据库中。
三、进行JOB创建和JOB对TASK的关联及配置
按照使用手册()进行如下操作。
3.1创建JOB,配置参数
在JOB管理界面点击添加Job
点击后步入添加Job界面
选取,尽量选取所要关联的TASK所属的Group组名。
分别填写Job类型及其他项,Job类型也可以选择(特定时间点)类型,本例为CRON类型,具体数值为:0/30****?,表示从当前时刻开始,每30秒执行一次
点击添加,添加JOB成功。
3.2配置TASK
添加JOB成功后,须要为该JOB配置相应的TASK,可配置单个或多个,本例以配置两个级联TASK为例。
点击配置TASK后,步入Task信息配置界面。
如上图所示,将须要配置的两个TASK均拉取至左边,点击编辑按键(钢笔形状),步入TASK参数配置界面。
参数配置:
参数配置:
按图中编辑完成后,点击添加,成功将和配置至JOB中。
添加完毕后,可进行两个TASK的依赖关系配置,如右图所示:
用箭头将(后置TASK)指向(前置TASK),即可完成TASK之间的依赖关系设置,点击递交,完成整个JOB的配置,配置完成后,可点击TASK信息按键,查看TASK配置信息详情,观察该JOB的TASK配置情况。
TASK配置信息图
TASK配置信息详情
四、激活JOB并观察相应日志
TASK配置成功后,点击状态操作下拉按键中激活按键,激活JOB。
激活JOB后,刷新该界面,可发觉该JOB列表调度器(红框处)出现调度器IP及端标语,表示该JOB激活后被该调度器占据。
4.1先观察管理界面JOB及TASK日志
成功激活JOB后,步入调度日志界面,等待至JOB执行时间后任务平台,可查看到该JOB执行日志,如右图示。
标号1:代表该JOB日志。
标号2:代表该JOB所关联的后置TASK()日志。
标号3:代表该JOB所关联的前置TASK()日志。
标号4:为系统追加的一个虚拟TASK,仅表示该JOB的一次调度过程完成。
同时从执行时间也可观察出,每30秒调度一次。
4.2再观察执行器TASK实例日志
还可观察执行器实例TASK日志,验证是否调用成功。
从日志可知,确实调用成功,而且每30秒调用一次。
4.3停止JOB
当须要停止JOB时,点击状态操作下拉按键中停止按纽,停止JOB。
本文仅是对微服务任务调度平台SIA-TASK的初步实践使用,通过以上描述,可实现SIA-TASK对执行器实例TASK实现任务调度的功能,本文中搭建的示例十分简单,适宜快速入手SIA-TASK,其实,SIA-TASK还有更强化大的任务调度功能,可以应对愈加复杂的业务场景,你们可以继续深度使用体验,将SIA-TASK的功能点和业务相结合,将其应用至愈加复杂的业务场景之下。