<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>

          FlowJob任務(wù)調(diào)度框架

          聯(lián)合創(chuàng)作 · 2023-09-29 14:28

          FlowJob任務(wù)調(diào)度框架,支持延時(shí)、定時(shí)、corn任務(wù);任務(wù)分發(fā)支持隨機(jī)、輪詢、一致性哈希、廣播、故障轉(zhuǎn)移、MapReduce等模式;支持任務(wù)編排,DAG工作流,支持在工作流程中進(jìn)行規(guī)則判斷。

          flowjob主要用于搭建統(tǒng)一的任務(wù)調(diào)度平臺(tái),方便各個(gè)業(yè)務(wù)方進(jìn)行接入使用。 項(xiàng)目在設(shè)計(jì)的時(shí)候,考慮了擴(kuò)展性、穩(wěn)定性、伸縮性等相關(guān)問題,可以作為公司的任務(wù)調(diào)度中間件被使用。

          功能介紹

          flowjob主要分為以下幾個(gè)部分:

          • Broker:中心節(jié)點(diǎn),負(fù)責(zé)任務(wù)的調(diào)度。
          • Worker:工作節(jié)點(diǎn),主要負(fù)責(zé)任務(wù)的具體執(zhí)行。
          • Console:通過Broker提供的Api,進(jìn)行任務(wù)創(chuàng)建/更新等一些管控操作。
          • Registry:注冊(cè)中心,目前使用DB做為注冊(cè)中心。提供了對(duì)應(yīng)接口,可以基于其它組件如zk、nacos等進(jìn)行靈活的封裝。
          • Datasource:數(shù)據(jù)庫用于持久化運(yùn)行數(shù)據(jù)

           

          調(diào)度類型

          • 固定速度:作業(yè)創(chuàng)建后,每次調(diào)度下發(fā)后,間隔固定時(shí)間長(zhǎng)度后,再次觸發(fā)作業(yè)調(diào)度。
          • 固定延遲:作業(yè)創(chuàng)建后,每次作業(yè)下發(fā)執(zhí)行完成(成功或失敗)后,間隔固定時(shí)間長(zhǎng)度后,再次觸發(fā)作業(yè)調(diào)度。
          • CRON:通過CRON表達(dá)式指定作業(yè)觸發(fā)調(diào)度的時(shí)間點(diǎn)。

          負(fù)載策略

          • 隨機(jī):將作業(yè)隨機(jī)下發(fā)給某一個(gè)worker執(zhí)行。
          • 輪詢:將任務(wù)逐個(gè)分配給worker。
          • 最不經(jīng)常使用:將作業(yè)下發(fā)給一個(gè)時(shí)間窗口內(nèi),接收作業(yè)最少的worker。
          • 最近最少使用:將作業(yè)下發(fā)給一個(gè)時(shí)間窗口內(nèi),最長(zhǎng)時(shí)間沒有接受worker的worker。
          • 一致性hash:同樣參數(shù)的作業(yè)將始終下發(fā)給同一臺(tái)機(jī)器。
          • 指定節(jié)點(diǎn):讓作業(yè)指定下發(fā)到某個(gè)worker執(zhí)行。

          節(jié)點(diǎn)過濾方式

          1. 執(zhí)行器:任務(wù)只會(huì)下發(fā)給包含任務(wù)對(duì)應(yīng)執(zhí)行器的worker。
          2. 標(biāo)簽:任務(wù)只會(huì)下發(fā)給包含指定標(biāo)簽的worker。
          3. 容量:基于worker的任務(wù)隊(duì)列/CPU/內(nèi)存使用情況過濾(TODO)

          任務(wù)觸發(fā)方式

          • API:通過指定api觸發(fā)任務(wù)執(zhí)行。
          • 調(diào)度:Broker自動(dòng)組裝數(shù)據(jù),調(diào)度對(duì)應(yīng)的任務(wù)。

          任務(wù)類型

          任務(wù)可以為單任務(wù)/工作流。單任務(wù)可以理解為只有一個(gè)節(jié)點(diǎn)的工作流任務(wù)。

          • 普通:對(duì)應(yīng)某個(gè)執(zhí)行器,執(zhí)行結(jié)束任務(wù)結(jié)束。
          • 廣播:在下發(fā)的時(shí)間點(diǎn),對(duì)每個(gè)可下發(fā)的節(jié)點(diǎn)下發(fā)任務(wù),所以子任務(wù)執(zhí)行完成當(dāng)前任務(wù)才執(zhí)行完成。
          • Map:分為split和map兩個(gè)步驟。split的時(shí)候進(jìn)行任務(wù)拆分,map則對(duì)每個(gè)拆分任務(wù)進(jìn)行執(zhí)行。
          • MapReduce:相比于Map多了Reduce過程,可以對(duì)所有Map任務(wù)的執(zhí)行結(jié)果進(jìn)行一個(gè)匯總。

          使用幫助

          Server部署

          環(huán)境要求

          • JDK8
          • Mysql

          Step1: 數(shù)據(jù)庫配置

          目前使用flywaydb動(dòng)態(tài)地進(jìn)行數(shù)據(jù)初始化操作

          配置項(xiàng) 說明
          spring.datasource.url 連接地址
          spring.datasource.username 賬號(hào)
          spring.datasource.password 密碼

          Step2: 服務(wù)打包

          根據(jù)需要修改配置

          配置項(xiàng) 說明
          flowjob.broker.name 節(jié)點(diǎn)名稱,保持全局唯一。默認(rèn)不配置自動(dòng)生成即可
          flowjob.broker.host 提供給worker的服務(wù)的 host。可以是域名或 IP 地址,如不填寫則自動(dòng)發(fā)現(xiàn)本機(jī)非 127.0.0.1 的地址。多網(wǎng)卡場(chǎng)景下,建議顯式配置 host。
          flowjob.broker.port 提供給worker的服務(wù) port 如果未指定此配置,則嘗試使用 配置;如server.port配置;如{server.port} 配置也不存在,則使用 8080,
          flowjob.broker.scheme RPC 通信協(xié)議類型。默認(rèn)為 http。于worker保持一致
          flowjob.broker.heartbeat-interval broker心跳時(shí)間間隔,毫秒。默認(rèn)2000
          flowjob.broker.heartbeat-timeout broker心跳超時(shí)時(shí)間,毫秒。默認(rèn)5000
          flowjob.broker.worker.heartbeat-timeout worker心跳超時(shí)時(shí)間,毫秒。默認(rèn)5000

          項(xiàng)目根目錄下,執(zhí)行如下命令打包編譯,通過-P參數(shù)指定環(huán)境,如開發(fā)環(huán)境為-P dev

          mvn clean package -Dmaven.test.skip=true -P dev
          

          Worker部署

          對(duì)于需要使用worker的Web應(yīng)用(宿主應(yīng)用),可以參考Demo

          Step1: 添加依賴

          對(duì)于Maven項(xiàng)目

          <dependency>
              <groupId>io.github.limbo-world</groupId>
              <artifactId>flowjob-worker-spring-boot-starter</artifactId>
              <version>1.0.1</version>
          </dependency>
          

          Step2: 修改配置

          配置項(xiàng) 說明
          flowjob.worker.name 節(jié)點(diǎn)名稱,保持全局唯一。默認(rèn)不配置自動(dòng)生成即可
          flowjob.worker.scheme RPC 通信協(xié)議類型。默認(rèn)為 http。于broker保持一致
          flowjob.worker.host RPC host。可以是域名或 IP 地址,如不填寫則自動(dòng)發(fā)現(xiàn)本機(jī)非 127.0.0.1 的地址。多網(wǎng)卡場(chǎng)景下,建議顯式配置 host。
          flowjob.worker.port RPC port 如果未指定此配置,則嘗試使用 配置;如??????.????配置;如{server.port} 配置也不存在,則使用 8080,
          flowjob.worker.brokers Broker節(jié)點(diǎn)地址,可配置多個(gè),參考DEMO中的配置
          flowjob.worker.heartbeat Worker 向 Broker 發(fā)送心跳請(qǐng)求的間隔,默認(rèn) 2 秒。
          flowjob.worker.tags 標(biāo)簽,k=v形式

          參與貢獻(xiàn)

          如果你對(duì)本項(xiàng)目有任何建議或想加入我們的,可以通過下面方式:,歡迎提交 issues 進(jìn)行指正。

          瀏覽 26
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <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>
                  波多野结衣中文字幕日韩久久 | 久久综合伊人 | 在线看黄 片 | 真实亲子乱一区二区 | 国产三级片自拍 |