写点什么

微服务任务调度平台 SIA-TASK 入手实践

  • 2020-02-10
  • 本文字数:2473 字

    阅读完需:约 8 分钟

微服务任务调度平台SIA-TASK入手实践

引言

最近宜信开源微服务任务调度平台 SIA-TASK,SIA-TASK 属于分布式的任务调度平台,使用起来简单方便,非常容易入手,部署搭建好 SIA-TASK 任务调度平台之后,编写 TASK 后配置 JOB 进行调度,进而实现整个调度流程。本文新建了 JOB 示例,该 JOB 关联了前后级联的两个 TASK,TASKONE(前置 TASK)和 TASKTWO(后置 TASK),主要阐述一个 JOB 怎样关联配置两个级联 TASK,以及该 JOB 是如何通过 SIA-TASK 实现任务调度,最终实现对两个 TASK 执行器的调用。


拓展阅读:宜信开源|宜信开源微服务任务调度平台SIA—TASK


宜信开源|分布式任务调度平台SIA-TASK的架构设计与运行流程

首先,根据部署文档来搭建任务调度平台。

源码地址:https://github.com/siaorg/sia-task


官方文档:https://github.com/siaorg/sia-task/blob/master/README.md


任务调度平台主要由任务编排中心、任务调度中心以及 ZK 和 DB 等第三方服务构成,搭建 SIA-TASK 任务调度平台需要的主要工作包括:


1.MySQL 的搭建及根据建表语句建表


2.zookeeper 安装


3.SIA-TASK 前端项目打包及部署


4.任务编排中心(sia-task-config)部署


5.任务调度中心(sia-task-scheduler)部署


从 github 上 clone 代码仓库并下载源码后,可根据SIA-TASK部署指南,搭建 SIA-TASK 任务调度平台并启动,详见SIA-TASK部署指南


搭建好 SIA-TASK 任务调度平台后,下一步就是 TASK 执行器实例的编写啦。

其次,根据开发文档来编写 TASK 执行器实例并启动。

根据SIA-TASK开发指南,编写了两个 TASK 示例,TASKONE(前置 TASK)和 TASKTWO(后置 TASK),具体开发规则见SIA-TASK开发指南,TASK 示例关键配置即代码在下文有详细展示与介绍。


该示例为 springboot 项目,并且需要通过 POM 文件引入 SIA-TASK 的执行器关键依赖包 sia-task-hunter 来实现 task 执行器的自动抓取,首先需要将 SIA-TASK 源码中的 sia-task-hunter 包用 mvn install 命令打包为 jar 包安装至本地仓库,SIA-TASK 源码中的 sia-task-hunter 包如下图示:



1560826579812044445.png


然后就可以进行示例的编写,示例主要包括以下几部分:

配置POM文件关键依赖


<!-- 此处添加个性化依赖(sia-task-hunter) -->

复制代码

配置文件主要配置项

  \# 项目名称(必须)    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
复制代码

编写 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() { Map
复制代码

当编写完 TASK 执行器实例后,启动该执行器所在进程

启动日志如下图:


1560826601326076741.png



日志表明该进程正常启动,并且 TASK 执行器信息正常上传至 ZK 当中,


观察 TASK 管理界面,如图示:



1560826607684074537.png


从图中可知,TASK 已同步至数据库中。

再次,需要进行 JOB 的创建和 JOB 对 TASK 的关联及配置。

根据使用指南进行如下操作。

创建 JOB,配置参数

在 JOB 管理界面点击添加Job



1560826621179016006.png


点击后进入添加Job界面



1560826626992001214.png


选定 Job_Group,尽量选定所要关联的 TASK 所属的 Group 组名。


分别填写 Job 类型及其他项,Job 类型也可以选择 FixRate(特定时间点)类型,本例为 CRON 类型,具体数值为:0/30 * * * * ?,表示从当前时刻开始,每 30 秒执行一次


点击添加,添加 JOB 成功。

配置 TASK

添加 JOB 成功后,需要为该 JOB 配置相应的 TASK,可配置单个或多个,本例以配置两个级联 TASK 为例。



1560826633981048977.png


点击配置TASK后,进入Task信息配置界面。



1560826639418030090.png


如上图所示,将需要配置的两个 TASK 均拉取至右侧,点击编辑按钮(铅笔形状),进入 TASK参数配置界面。


TASKONE 参数配置:


1560826645197090958.png



TASKTWO 参数配置:



1560826651281088101.png


按图中编辑完成后,点击添加,成功将 TASKONE 和 TASKTWO 配置至 JOB 中。


添加完毕后,可进行两个 TASK 的依赖关系配置,如下图所示:



1560826657191054832.png


用箭头将 TASKONE(前置 TASK)指向 TASKTWO(后置 TASK),即可完成 TASK 之间的依赖关系设置,点击提交,完成整个 JOB 的配置,配置完成后,可点击TASK信息按钮,查看TASK配置信息详情,观察该 JOB 的 TASK 配置情况。


TASK配置信息图



1560826662627066742.png


TASK配置信息详情


1560826668130011948.png


最后,激活 JOB 并观察相应日志。

TASK 配置成功后,点击状态操作下拉按钮中激活按钮,激活 JOB。


1560826674169018583.png



激活 JOB 后,刷新该界面,可发现该 JOB 列表调度器(红框处)出现调度器 IP 及端口号,表示该 JOB 激活后被该调度器抢占。

先观察管理界面 JOB 及 TASK 日志

成功激活 JOB 后,进入调度日志界面,等待至 JOB 执行时间后,可查看到该 JOB 执行日志,如下图示。



1560826679884048317.jpg


标号 1:代表该 JOB 日志。


标号 2:代表该 JOB 所关联的前置 TASK(TASKONE)日志。


标号 3:代表该 JOB 所关联的后置 TASK(TASKTWO)日志。


标号 4:endTask 为系统追加的一个虚拟 TASK,仅表示该 JOB 的一次调度过程完成。


同时从执行时间也可观察出,每 30 秒调度一次。

再观察执行器 TASK 实例日志

还可观察执行器实例 TASK 日志,验证是否调用成功。



1560826685943047193.png


从日志可知,确实调用成功,并且每 30 秒调用一次。

停止 JOB

当需要停止 JOB 时,点击状态操作下拉按钮中停止按钮,停止 JOB。


1560826691633009380.png



本文仅是对微服务任务调度平台 SIA-TASK 的初步实践使用,通过以上描述,可实现 SIA-TASK 对执行器实例 TASK 实现任务调度的功能,本文中搭建的示例非常简单,适合快速入手 SIA-TASK,当然,SIA-TASK 还有更加强大的任务调度功能,可以应对更加复杂的业务场景,大家可以继续深度使用体验,将 SIA-TASK 的功能点和业务相结合,将其应用至更加复杂的业务场景之下。


本文转载自宜信技术网站。


原文链接:http://college.creditease.cn/detail/263


2020-02-10 21:081127

评论 1 条评论

发布
用户头像
推荐一个强大的分布式任务调度与计算框架PowerJob,支持CRON、API、固定频率、固定延迟等多种调度策略,支持MapReduce分布式计算,支持工作流任务编排(DAG),功能强大,文档齐全,接入简单!
项目地址:https://github.com/KFCFans/PowerJob
2020-11-08 12:01
回复
没有更多了
发现更多内容

第二周作业

Geek_ac4080

第二周学习总结

熊桂平

极客大学架构师训练营

面向对象编程与软件设计原则

zero2onemore

【架构师训练营第 1 期 02 周】 作业

Geek_4437a0

极客大学架构师训练营

week2

张兵

极客大学架构师训练营

框架设计作业

ABS

ARTS打卡 第18周

引花眠

微服务 ARTS 打卡计划

【架构师训练营1期】第二周学习总结

诺乐

架构师训练营学习小结(第二周2020.9.21 - 9.27)

zjzj2017

Week_02学习总结

golangboy

架构师训练营第一期——第二周作业

tao

SOLID五大框架设计原则

Zzzz

极客大学架构师训练营

架构师第 2 课作业及学习总结

小诗

极客大学架构师训练营

第2周

paul

第二周作业一

dll

逼着面试官问了我ArrayList和LinkedList的区别,他对我彻底服了

沉默王二

Java ArrayList linkedlist

高难度对话读书笔记—求助的勇气

wo是一棵草

一篇搞定前端高频手撕算法题(36道)

执鸢者

面试 算法 大前端

架构师训练营第一期——第二周总结

tao

第二周作业

zero2onemore

架构师训练营第 1 期 - 第2周 - 作业

wgl

架构第二周总结

Geek_Gu

极客大学架构师训练营

架构师训练营营第 1 期之框架设计02

天行健

架构师训练营第二周作业

zjzj2017

框架设计原则

wing

极客大学架构师训练营

最通俗易懂的——如何将机器学习模型的准确性从80%提高到90%以上

计算机与AI

学习 数据科学

ARTS Week11

丽子

【架构师训练营 1 期】第二周作业

诺乐

架构师训练营学习小结(2020.9.14 - 9.20)

zjzj2017

收款神器!解读聚合收款码背后的原理

楼下小黑哥

SpringBoot系列(2)-第一个SpringBoot程序

引花眠

springboot

微服务任务调度平台SIA-TASK入手实践_开源_李兴胜_InfoQ精选文章