宜信开源|微服务任务调度平台SIA-TASK入手实践

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,182元/月
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
简介: 部署搭建好SIA-TASK任务调度平台之后,编写TASK后配置JOB进行调度,进而实现整个调度流程。本文新建JOB示例,介绍JOB怎样关联配置两个级联TASK,以及如何通过SIA-TASK实现任务调度,最终实现对两个TASK执行器的调用。

引言

最近宜信开源微服务任务调度平台SIA-TASK,SIA-TASK属于分布式的任务调度平台,使用起来简单方便,非常容易入手,部署搭建好SIA-TASK任务调度平台之后,编写TASK后配置JOB进行调度,进而实现整个调度流程。本文新建了JOB示例,该JOB关联了前后级联的两个TASK,TASKONE(前置TASK)和TASKTWO(后置TASK),主要阐述一个JOB怎样关联配置两个级联TASK,以及该JOB是如何通过SIA-TASK实现任务调度,最终实现对两个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 = "*")
    @ResponseBody
    public 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 = "*")
    @ResponseBody
    public 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的功能点和业务相结合,将其应用至更加复杂的业务场景之下。

作者:李兴胜

来源:宜信技术学院

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
1月前
|
Kubernetes Java 调度
无需接入执行器,0 代码改造实现微服务任务调度
本文提出了一种基于云原生的任务调度新方案,不需要依赖SDK,不依赖语言,实现定时调度和分布式跑批。
184 14
|
2月前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1587 9
|
1月前
|
Kubernetes 调度 微服务
无需接入执行器,0代码改造实现微服务任务调度
本文提出了一种基于云原生的任务调度新方案,不需要依赖SDK,不依赖语言,实现定时调度和分布式跑批
140 1
|
4月前
|
数据采集 弹性计算 自然语言处理
微服务化采集平台:可扩展性与容错机制
本文介绍一个基于财经场景的微服务化数据采集平台,解决新浪财经等内容站点信息分散、结构多变、更新频繁等痛点。通过代理配置、动态解析、自动分类与容错机制,实现要闻、突发、证券资讯的高效抓取与结构化处理,为舆情监控、NLP分析和投研建模提供实时数据支撑,提升市场响应速度与数据质量。
106 1
微服务化采集平台:可扩展性与容错机制
|
6月前
|
人工智能 数据可视化 JavaScript
颠覆开发效率!国内首个微服务编排框架Juggle开源啦!
Juggle是国内首个开源的微服务编排框架,专注于解决企业微服务进程中接口重复开发、系统对接复杂等问题。它提供零代码、低代码和AI增强功能,通过可视化拖拽快速组装简单API为复杂接口,支持多协议、多语言脚本和流程多版本管理。相比国外框架如Conductor,Juggle更贴合国内需求,具备高效开发、企业级可靠性及信创适配等优势,助力企业实现敏捷创新与数字化转型。
颠覆开发效率!国内首个微服务编排框架Juggle开源啦!
|
7月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
434 12
|
9月前
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
|
10月前
|
搜索推荐 NoSQL Java
微服务架构设计与实践:用Spring Cloud实现抖音的推荐系统
本文基于Spring Cloud实现了一个简化的抖音推荐系统,涵盖用户行为管理、视频资源管理、个性化推荐和实时数据处理四大核心功能。通过Eureka进行服务注册与发现,使用Feign实现服务间调用,并借助Redis缓存用户画像,Kafka传递用户行为数据。文章详细介绍了项目搭建、服务创建及配置过程,包括用户服务、视频服务、推荐服务和数据处理服务的开发步骤。最后,通过业务测试验证了系统的功能,并引入Resilience4j实现服务降级,确保系统在部分服务故障时仍能正常运行。此示例旨在帮助读者理解微服务架构的设计思路与实践方法。
618 17
|
9月前
|
监控 Cloud Native Java
基于阿里云容器服务(ACK)的微服务架构设计与实践
本文介绍如何利用阿里云容器服务Kubernetes版(ACK)构建高可用、可扩展的微服务架构。通过电商平台案例,展示基于Java(Spring Boot)、Docker、Nacos等技术的开发、容器化、部署流程,涵盖服务注册、API网关、监控日志及性能优化实践,帮助企业实现云原生转型。
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
640 6

热门文章

最新文章