宜信開源|微服務任務調度平臺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…

官方文檔: https://github.com/siaorg/sia…

任務調度平臺主要由任務編排中心、任務調度中心以及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包如下圖示:

宜信開源|微服務任務調度平臺SIA-TASK入手實踐

然后就可以進行示例的編寫,示例主要包括以下幾部分:

配置 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執行器實例后,啟動該執行器所在進程

啟動日志如下圖:

宜信開源|微服務任務調度平臺SIA-TASK入手實踐

日志表明該進程正常啟動,并且TASK執行器信息正常上傳至ZK當中,

觀察TASK管理界面,如圖示:

宜信開源|微服務任務調度平臺SIA-TASK入手實踐

從圖中可知,TASK已同步數據庫中。

再次,需要進行JOB的創建和JOB對TASK的關聯及配置。

根據 使用指南 進行如下操作。

創建JOB,配置參數

在JOB管理界面點擊 添加Job

宜信開源|微服務任務調度平臺SIA-TASK入手實踐

點擊后進入 添加Job 界面

宜信開源|微服務任務調度平臺SIA-TASK入手實踐

選定Job_Group,盡量選定所要關聯的TASK所屬的Group組名。

分別填寫Job類型及其他項,Job類型也可以選擇FixRate(特定時間點)類型,本例為CRON類型,具體數值為:0/30 ?,表示從當前時刻開始,每30秒執行一次

點擊 添加 ,添加JOB成功。

配置TASK

添加JOB成功后,需要為該JOB配置相應的TASK,可配置單個或多個,本例以配置兩個級聯TASK為例。

宜信開源|微服務任務調度平臺SIA-TASK入手實踐

點擊 配置TASK 后,進入 Task信息配置 界面。

宜信開源|微服務任務調度平臺SIA-TASK入手實踐

如上圖所示,將需要配置的兩個TASK均拉取至右側,點擊 編輯 按鈕(鉛筆形狀),進入TASK 參數配置 界面。

TASKONE參數配置:

宜信開源|微服務任務調度平臺SIA-TASK入手實踐

TASKTWO參數配置:

宜信開源|微服務任務調度平臺SIA-TASK入手實踐

按圖中編輯完成后,點擊 添加 ,成功將TASKONE和TASKTWO配置至JOB中。

添加完畢后,可進行兩個TASK的依賴關系配置,如下圖所示:

宜信開源|微服務任務調度平臺SIA-TASK入手實踐

用箭頭將TASKONE(前置TASK)指向TASKTWO(后置TASK),即可完成TASK之間的依賴關系設置,點擊提交,完成整個JOB的配置,配置完成后,可點擊 TASK信息 按鈕,查看 TASK配置信息詳情 ,觀察該JOB的TASK配置情況。

TASK配置信息圖

宜信開源|微服務任務調度平臺SIA-TASK入手實踐

TASK配置信息詳情

宜信開源|微服務任務調度平臺SIA-TASK入手實踐

最后,激活JOB并觀察相應日志。

TASK配置成功后,點擊 狀態操作 下拉按鈕中 激活 按鈕,激活JOB。

宜信開源|微服務任務調度平臺SIA-TASK入手實踐

激活JOB后,刷新該界面,可發現該JOB列表調度器(紅框處)出現調度器IP及端口號,表示該JOB激活后被該調度器搶占。

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

成功激活JOB后,進入調度日志界面,等待至JOB執行時間后,可查看到該JOB執行日志,如下圖示。

宜信開源|微服務任務調度平臺SIA-TASK入手實踐

標號1:代表該JOB日志。

標號2:代表該JOB所關聯的前置TASK(TASKONE)日志。

標號3:代表該JOB所關聯的后置TASK(TASKTWO)日志。

標號4:endTask為系統追加的一個虛擬TASK,僅表示該JOB的一次調度過程完成。

同時從執行時間也可觀察出,每30秒調度一次。

再觀察執行器TASK實例日志

還可觀察執行器實例TASK日志,驗證是否調用成功。

宜信開源|微服務任務調度平臺SIA-TASK入手實踐

從日志可知,確實調用成功,并且每30秒調用一次。

停止JOB

當需要停止JOB時,點擊 狀態操作 下拉按鈕中 停止 按鈕,停止JOB。

宜信開源|微服務任務調度平臺SIA-TASK入手實踐

本文僅是對微服務任務調度平臺SIA-TASK的初步實踐使用,通過以上描述,可實現SIA-TASK對執行器實例TASK實現任務調度的功能,本文中搭建的示例非常簡單,適合快速入手SIA-TASK,當然,SIA-TASK還有更加強大的任務調度功能,可以應對更加復雜的業務場景,大家可以繼續深度使用體驗,將SIA-TASK的功能點和業務相結合,將其應用至更加復雜的業務場景之下。

原文 

https://segmentfault.com/a/1190000019510704

本站部分文章源于互聯網,本著傳播知識、有益學習和研究的目的進行的轉載,為網友免費提供。如有著作權人或出版方提出異議,本站將立即刪除。如果您對文章轉載有任何疑問請告之我們,以便我們及時糾正。

PS:推薦一個微信公眾號: askHarries 或者qq群:474807195,里面會分享一些資深架構師錄制的視頻錄像:有Spring,MyBatis,Netty源碼分析,高并發、高性能、分布式、微服務架構的原理,JVM性能優化這些成為架構師必備的知識體系。還能領取免費的學習資源,目前受益良多

轉載請注明原文出處:Harries Blog? » 宜信開源|微服務任務調度平臺SIA-TASK入手實踐

贊 (0)
分享到:更多 ()

評論 0

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址
2013平特肖公式