1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        job-dispatcher工作流編排、任務調(diào)度引擎

        聯(lián)合創(chuàng)作 · 2023-10-01 07:36

        job-dispatcher

        介紹

        一個工作流編排,任務調(diào)度引擎

        GtiHub地址:https://github.com/xuda783380930/job-dispatcher.git

        基本模型:

        基于事件或者定時生成一個job,每個job由若干個task組成,task之間存在串行或并行的依賴關系

        task的具體實現(xiàn)引由客戶端(用戶自己編程實現(xiàn)),調(diào)度引擎只負責按照拓撲順序發(fā)出HTTP信號觸發(fā)任務

        由客戶端發(fā)出HTTP通知引擎任務任務的完成狀態(tài),調(diào)度引擎據(jù)此繼續(xù)發(fā)出后續(xù)調(diào)度信號

        使用場景:

        任務編排,事件驅(qū)動或時間驅(qū)動的任務調(diào)度,如企業(yè)級ETL調(diào)度等

        特點:

        調(diào)度引擎只做調(diào)度和任務編排,不參與具體任務實現(xiàn)和執(zhí)行,可看作一個HTTP信號發(fā)射和接收器,具有極大的適用性,天生支持異構(gòu)系統(tǒng),引擎端和任務實現(xiàn)端徹底的解耦。

        job-dispatcher是微服務中的一個獨立組件,而非作業(yè)平臺,因此它并不去實現(xiàn)各類任務的運行環(huán)境的適配工作,任何實現(xiàn)了配置中子任務HTTP啟動接口的程序都可以作為job-dispatche的客戶端,無論是何種語言何種數(shù)據(jù)庫的程序。

        相似項目: Linkedin公司推出的Azkaban , 國產(chǎn)軟件TASKCTL, 歡迎大家對比提出意見

        軟件架構(gòu)

        軟件架構(gòu)說明

        1.時間調(diào)度引擎:基于Quartz,按時觸發(fā)對應的Job

        2.Job引擎:可注冊JobBuilder(包含子任務的依賴關系),Job引擎收到觸發(fā)信號后,根據(jù)builder生成JobBox實例(包含批次時間和任務執(zhí)行狀態(tài)) 按照時間順序JobBox被Put到隊列中,隊首的JobBox會被消費,即按照拓撲關系依次發(fā)出信號,直到所有子任務執(zhí)行完畢,繼續(xù)執(zhí)行下一個 JobBox。

        3.使用的框架:JDK1.8,SpringBoot2.0,Quartz,JPA,Echarts,Amazeui,Swagger2

        安裝教程

        1.修改對應的jdbc數(shù)據(jù)源配置和pom里面的jdbc驅(qū)動依賴

        2.基于Springboot,用maven打包成Jar后啟動即可

        使用說明

        1. JDK1.8環(huán)境,通過默認端口瀏覽器訪問就可以看到主頁

        2. 通過quartz/registerjob接口,傳入Json格式的Job配置文件注冊任務即可,具體如下

          1.任務端向引擎注冊一個定時Job http://ip:port/quartz/register?json={}

          //通過下列的json配置樣例

          {

          "jobBoxBuilder": {

           "jobCode": "job1",
          
                   "monitorParas":{mobileNos:[ "18621711111","18616152222"]} //短信收信人
          
                   "taskBuilderMap": [ //Job內(nèi)的task組成列表
          
               {
                   "taskCode": "task1",
          
                   "adapterPara": "http://172.11.33.44/trigger?jobCode=jos1&taskCode=task1", 
          
                   "upstreamTaskCodes": ["task2"], //依賴task2,task2完成后task1才可執(zhí)行
          
                   "overTime":"60" //超時時間60分鐘則報警
               },
          
               {
                   "taskCode": "task2",
          
                   "adapterPara": "http://172.11.33.44/trigger? jobCode=jos2&taskCode=task2"
          
                   //"upstreamTaskCodes":[]    //不依賴任何任務可以不填該字段
          
                                   //"overTime":"60" //可不填
               }
          
           ]

           

          },

          "jobCronExpression": "0 0/1 11 * * ?", //每天11點每隔一分鐘執(zhí)行一次

          "filterCalendarName": "nonTradingDays" //過濾nonTradingDays日歷組

          }

          2.任務端向引擎通知任務執(zhí)行情況

          UNSTART("未開始", 0),TRIGGERED("正在觸發(fā)", 1),STARTED("正在執(zhí)行", 2),NEED_RESTART("需重新執(zhí)行", 3), PAUSED("已暫停", 4),FINISHED("已完畢", 5);

          http://ip:port/task/call?jobcode=job1&taskcode=task2&status=0

          3.查看job的等待隊列的情況,查看正在執(zhí)行的job的情況(通過前端頁面關系圖查看)

        瀏覽 25
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        編輯 分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        編輯 分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产一级a一级a爱片免费高清 | 国产精品扒开腿做爽爽爽A片唱戏 | 激情网站入口 | 国产后进白嫩翘臀在线欧美 | 乱伦小视频 | 亚洲狼人久久久精品 | 伊人操B| 男模警察裸体裸茎视频 | 日韩精品一区二区三区四区五区 | 欧洲成人网站 |