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>

        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í)間長度后,再次觸發(fā)作業(yè)調(diào)度。
        • 固定延遲:作業(yè)創(chuàng)建后,每次作業(yè)下發(fā)執(zhí)行完成(成功或失?。┖?,間隔固定時(shí)間長度后,再次觸發(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),最長時(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)卡場景下,建議顯式配置 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)卡場景下,建議顯式配置 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)
        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>
            他的硕大进出粉嫩h校园 | 国产一级a| 色色色婷| 一女多男混交群体交乱视频 | 国产不卡的av | 欧美日韩在线观看视频 | 美女露全胸视频 | 俺来也俺去也www色官 | 张开双腿嬷嬷调教宫口h | 91成人视频 |