宜信开源|微服务任务调度平台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包如下图示:
然后就可以进行示例的编写,示例主要包括以下几部分:
配置POM
文件关键依赖
<!-- 此处添加个性化依赖(sia-task-hunter) --><dependency><groupId>com.sia</groupId><artifactId>sia-task-hunter</artifactId><version>1.0.0</version></dependency>
配置文件主要配置项
# 项目名称(必须)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 = "*")@ResponseBodypublic String taskOne() {Map<String, String> info = new HashMap<String, String>();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 = "*")@ResponseBodypublic String taskTwo(@RequestBody String json) {Map<String, String> info = new HashMap<String, String>();info.put("result", "success-param"+"入参是:"+json);info.put("status", "success");System.out.println("调用taskTwo任务成功");return JSONHelper.toString(info);}}
当编写完TASK执行器实例后,启动该执行器所在进程
启动日志如下图:
日志表明该进程正常启动,并且TASK执行器信息正常上传至ZK当中,
观察TASK管理界面,如图示:
从图中可知,TASK已同步至数据库中。
再次,需要进行JOB的创建和JOB对TASK的关联及配置。
根据使用指南进行如下操作。
创建JOB,配置参数
在JOB管理界面点击添加Job
点击后进入添加Job
界面
选定Job_Group,尽量选定所要关联的TASK所属的Group组名。
分别填写Job类型及其他项,Job类型也可以选择FixRate(特定时间点)类型,本例为CRON类型,具体数值为:0/30 * * * * ?,表示从当前时刻开始,每30秒执行一次
点击添加
,添加JOB成功。
配置TASK
添加JOB成功后,需要为该JOB配置相应的TASK,可配置单个或多个,本例以配置两个级联TASK为例。
点击配置TASK
后,进入Task信息配置
界面。
如上图所示,将需要配置的两个TASK均拉取至右侧,点击编辑
按钮(铅笔形状),进入TASK参数配置
界面。
TASKONE参数配置:
TASKTWO参数配置:
按图中编辑完成后,点击添加
,成功将TASKONE和TASKTWO配置至JOB中。
添加完毕后,可进行两个TASK的依赖关系配置,如下图所示:
用箭头将TASKONE(前置TASK)指向TASKTWO(后置TASK),即可完成TASK之间的依赖关系设置,点击提交,完成整个JOB的配置,配置完成后,可点击TASK信息
按钮,查看TASK配置信息详情
,观察该JOB的TASK配置情况。
TASK配置信息图
TASK配置信息详情
最后,激活JOB并观察相应日志。
TASK配置成功后,点击状态操作
下拉按钮中激活
按钮,激活JOB。
激活JOB后,刷新该界面,可发现该JOB列表调度器(红框处)出现调度器IP及端口号,表示该JOB激活后被该调度器抢占。
先观察管理界面JOB及TASK日志
成功激活JOB后,进入调度日志界面,等待至JOB执行时间后,可查看到该JOB执行日志,如下图示。
标号1:代表该JOB日志。
标号2:代表该JOB所关联的前置TASK(TASKONE)日志。
标号3:代表该JOB所关联的后置TASK(TASKTWO)日志。
标号4:endTask为系统追加的一个虚拟TASK,仅表示该JOB的一次调度过程完成。
同时从执行时间也可观察出,每30秒调度一次。
再观察执行器TASK实例日志
还可观察执行器实例TASK日志,验证是否调用成功。
从日志可知,确实调用成功,并且每30秒调用一次。
停止JOB
当需要停止JOB时,点击状态操作
下拉按钮中停止
按钮,停止JOB。
本文仅是对微服务任务调度平台SIA-TASK的初步实践使用,通过以上描述,可实现SIA-TASK对执行器实例TASK实现任务调度的功能,本文中搭建的示例非常简单,适合快速入手SIA-TASK,当然,SIA-TASK还有更加强大的任务调度功能,可以应对更加复杂的业务场景,大家可以继续深度使用体验,将SIA-TASK的功能点和业务相结合,将其应用至更加复杂的业务场景之下。
作者:李兴胜
来源:宜信技术学院
转载于:https://www.cnblogs.com/yixinjishu/p/11044737.html
宜信开源|微服务任务调度平台SIA-TASK入手实践相关推荐
- 宜信开源|详解PaaS平台LAIN的功能和架构
[技术沙龙002期]数据中台:宜信敏捷数据中台建设实践|宜信技术沙龙 将于5月23日晚8点线上直播,点击报名 LAIN是宜信公司大数据创新中心开发的开源PaaS平台.在金融的场景下,LAIN 是为解放 ...
- 华为云微服务应用平台服务能力业界领先,通过微服务标准首批评估
4月24日,在2019年云原生产业大会上,中国信息通信研究院组织开展了业界首次微服务平台评估,华为云微服务应用平台(ServiceStage)作为业界微服务平台典型代表,以其完整的解决方案和成熟的产品 ...
- request中的内容存储_宜信开源|调用链系列(3):解读UAVStack中的调用链技术...
拓展阅读:宜信开源|调用链系列(1):解读UAVStack中的贪吃蛇 调用链系列(二):解读UAVStack中的贪吃蛇-调用链 在Java中,HTTP协议的请求/响应模型是由Servlet规范+Ser ...
- 微服务治理平台的RPC方案实现
文章作者:用友云平台 原文链接:http://blog.51cto.com/14084875/2326311?utm_source=tuicool&utm_medium=referral 复制 ...
- 开源微服务运行时 Dapr 发布 1.0 版本
作者 | Dapr 社区 译者 | 敖小剑 来源|阿里巴巴云原生公众号 Dapr 是 2019 年 10 月开源的分布式运行时.早在 Dapr 开源初期,阿里云就开始参与 Dapr 社区建设和代码开发 ...
- 开源微服务运行时 Dapr 1.0 版本
简介:Dapr 是 2019 年 10 月开源的分布式运行时.早在 Dapr 开源初期,阿里云就开始参与 Dapr 社区建设和代码开发,目前已有两位 Dapr 成员,是 Dapr 项目中除微软之外代码 ...
- golang微服务框架对比_最强开源微服务框架,全网独家整理
诞生于 2014 年的"微服务架构",其思想经由 Martin Fowler 阐述后,在近几年持续受到重视,理论与相关实践都不断发展,目前它已经成为了主流软件架构模式. 关于微服务 ...
- mPass 微服务开发平台
基于SpringBoot2.x.SpringCloud并采用前后端分离的企业级微服务,多租户系统架构微服务开发平台 mPaaS(Microservice PaaS)为租户业务开发.测试.运营及运维开源 ...
- JAVA SpringBlade 微服务开发平台框架,企业级的SaaS多租户微服务平台,基于Spring Boot 2.7
SpringBlade微服务开发平台 完整代码下载地址:JAVA SpringBlade 微服务开发平台框架,企业级的SaaS多租户微服务平台 采用前后端分离的模式,前端开源两个框架:Sword (基 ...
最新文章
- VUE保存页面的数据,VUE页面显示就执行某个函数,VUE页面隐藏就执行某个函数
- python做后端速度慢吗_【后端开发】python为什么慢?
- Mybatis使用generator自动生成映射配置文件信息
- mysql delete返回值_Mybatis执行sql(insert、update、delete)返回值问题
- 【ARM】Tiny4412裸板编程之异常(软中断)
- 听听一个院士的故事,你也能找到自己的路。
- python中的装饰器、装饰器模式_浅析Python装饰器以及装饰器模式
- 登陆豆瓣显示服务器开小差,豆瓣打不开
- 微信公众平台开发教程(十) 订阅号与服务号的区别
- python中re.group()
- 笛卡尔坐标为什么叫Cartesian coordinate而不是Descartes coordinate?
- java正则匹配ip_正则表达式匹配ip地址
- 【智慧农业】智慧温室建造流程
- 中集集团全球港航AI高科技独角兽中集飞瞳港口航运新枢纽人工智能技术走向成熟全球前三大船公司及港口码头应用落地港口智能化码头智能化
- M1芯片的mac下的Xcode12以上版本编译报错 this target. for architecture arm64等问题解决方案
- 内部存储器——①静态存储器
- 打造XP系统万能克隆-Ghost全攻略
- 关于Linux_STORAGE_WRITE_ERROR_:.var/Cache/Install/c6bbce5b1f1dcf027c8ceb5cf5141b65.php
- 《python3廖雪峰》正则表达式提取带名字特殊符号的Email地址
- 基于机器学习的航空公司客户价值分析与流失预测
热门文章
- python matplot绘图legend_Python matplotlib绘图基本元素
- 计算机网络rip工作原理,12. 小型网络 RIP 协议工作原理
- mysql 记录更新时间_MySQL表内更新时,自动记录时间
- python单元测试示范卷_Python单元测试--Unittest
- 那些在一个公司死磕了5-10年的测试员,最后都怎么样了?
- 计算机科学导论_[计算机科学导论]第一章:计算机学什么
- python不能复制粘贴_你知道怎么使用python实现复制粘贴的功能吗?
- 消息队列与rabbitMQ的各种问题
- 机器学习实战——线性回归和局部加权线性回归(含python中复制的四种情形!)
- 全国python一级考试_全国青少年软件编程(python)等级考试试卷(一级)