<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          job-dispatcher工作流編排、任務調度引擎

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

          job-dispatcher

          介紹

          一個工作流編排,任務調度引擎

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

          基本模型:

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

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

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

          使用場景:

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

          特點:

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

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

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

          軟件架構

          軟件架構說明

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

          2.Job引擎:可注冊JobBuilder(包含子任務的依賴關系),Job引擎收到觸發(fā)信號后,根據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數據源配置和pom里面的jdbc驅動依賴

          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內的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
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美在线观看不卡视频 | 经典三级在线视频 | 一级AA免费播放 | 精品韩国一区二区三区 | 最新中文字幕免费MV第一季歌词 |