劉一田, 劉士進(jìn)
(南瑞集團(tuán)公司(國網(wǎng)電力科學(xué)研究院), 南京 210003)
多租戶高可用并行任務(wù)調(diào)度框架①
劉一田, 劉士進(jìn)
(南瑞集團(tuán)公司(國網(wǎng)電力科學(xué)研究院), 南京 210003)
描述了一種多租戶高可用并行任務(wù)調(diào)度框架MTHPT的設(shè)計思想、體系結(jié)構(gòu)和實現(xiàn)技術(shù), MTHPT包括3部分: 任務(wù)定義與配置、異步并行任務(wù)調(diào)度模式、消息告警與監(jiān)視. 任務(wù)調(diào)度引擎和任務(wù)執(zhí)行組件采用分開部署、異步并行調(diào)度和快速回調(diào)的模式, 快速釋放調(diào)度引擎占用的線程資源, 解決了部分任務(wù)執(zhí)行周期長、定時任務(wù)無法按時執(zhí)行等影響業(yè)務(wù)系統(tǒng)性能的問題. 任務(wù)調(diào)度配置提供了多租戶應(yīng)用模式. 實驗分析及評估表明, MTHPT提高了應(yīng)用系統(tǒng)的任務(wù)調(diào)度并行調(diào)度效率和穩(wěn)定性.
多租戶; 高可用; 異步調(diào)度
在大型系統(tǒng)中, 任務(wù)調(diào)度是一項基礎(chǔ)性的需求.對于一些需要重復(fù)、定時執(zhí)行或者耗時比較長的任務(wù)經(jīng)常會被剝離出來單獨(dú)處理, 而隨著任務(wù)規(guī)模與復(fù)雜性的上升, 任務(wù)調(diào)度服務(wù)框架也就隨需而生. 設(shè)計良好的任務(wù)調(diào)度框架需要具備可靠性及伸縮性, 它可以管理并監(jiān)控任務(wù)的執(zhí)行狀態(tài), 提供穩(wěn)定可靠的調(diào)度模式調(diào)度任務(wù), 以保證任務(wù)的正確執(zhí)行.
文獻(xiàn)[1,2]概述了多租戶環(huán)境下多任務(wù)調(diào)度算法的劃分, 不同的調(diào)度算法會對系統(tǒng)的整體性能有重要的影響, 目前在實時多任務(wù)的調(diào)度算法主要采用優(yōu)先級驅(qū)動調(diào)度算法, 根據(jù)任務(wù)的優(yōu)先級確定時序, 優(yōu)先級驅(qū)動的調(diào)度算法分為靜態(tài)調(diào)度和動態(tài)調(diào)度兩種. 在靜態(tài)調(diào)度算法中, 所有任務(wù)的優(yōu)先級在設(shè)計時就確定下來了, 且在運(yùn)行過程中不會發(fā)生變化; 在動態(tài)調(diào)度算法中, 任務(wù)的優(yōu)先級則在運(yùn)行過程中確定, 并可能不斷地發(fā)生變化. 靜態(tài)調(diào)度比較簡單, 但缺乏靈活性,不利于系統(tǒng)擴(kuò)展. 動態(tài)調(diào)度在增加靈活性的同時增加了復(fù)雜性. 這些任務(wù)調(diào)度的調(diào)度算法常采用的時間片輪轉(zhuǎn)和優(yōu)先級搶占等調(diào)度策略, 任務(wù)調(diào)度方式采用單機(jī)多線程的方式調(diào)度任務(wù)資源, 每次任務(wù)調(diào)度時都會創(chuàng)建一個新的調(diào)度線程, 由于業(yè)務(wù)系統(tǒng)中部分統(tǒng)計類任務(wù)本身執(zhí)行耗時較長, 且調(diào)度線程采用同步方式一直等到服務(wù)調(diào)用結(jié)束后才回收, 在多數(shù)情況下, 線程資源在長時間空等而形成浪費(fèi), 個別任務(wù)執(zhí)行異常也會占用線程不釋放資源, 導(dǎo)致調(diào)度服務(wù)的線程池快速飽和, 出現(xiàn)無法啟動新任務(wù)、任務(wù)延時執(zhí)行、任務(wù)不執(zhí)行的情況, 且偶爾會發(fā)生任務(wù)調(diào)度服務(wù)器宕機(jī)的情況.
一種有效的任務(wù)調(diào)度和分配算法是多核處理器獲取高性能的關(guān)鍵因素. 因此, 本文設(shè)計了一種多租戶高可用并行任務(wù)調(diào)度框架MTHPT, 解決業(yè)務(wù)系統(tǒng)中出現(xiàn)的上述問題, 提升基礎(chǔ)軟件開發(fā)平臺的通用技術(shù)支撐能力. 通過可視化界面定義任務(wù)的執(zhí)行組件, 任務(wù)執(zhí)行組件支持REST服務(wù)和本地服務(wù)Bean兩種執(zhí)行組件, 為了增加引擎的穩(wěn)定性, MTHPT默認(rèn)使用REST服務(wù)接口定義執(zhí)行組件, 即任務(wù)執(zhí)行組件和調(diào)度引擎作為兩個獨(dú)立的應(yīng)用, 調(diào)度引擎只負(fù)責(zé)觸發(fā)框架任務(wù)執(zhí)行組件封裝器的調(diào)用, 由封裝器啟動應(yīng)用線程執(zhí)行任務(wù)調(diào)度. 任務(wù)的定義支持調(diào)度規(guī)則的配置,支持手工任務(wù)、周期任務(wù)和Cron表達(dá)式任務(wù)規(guī)則. 在部署架構(gòu)上支持調(diào)度引擎和執(zhí)行任務(wù)分開部署, 在調(diào)度方式上采用異步并行執(zhí)行部署在應(yīng)用中的框架任務(wù)執(zhí)行組件封裝器, 通過執(zhí)行組件接口約束自定義業(yè)務(wù)執(zhí)行組件, 在執(zhí)行具體的任務(wù)調(diào)度時, 在任務(wù)執(zhí)行組件封裝器中分別啟動業(yè)務(wù)應(yīng)用服務(wù)器線程、調(diào)用部署任務(wù)的應(yīng)用線程執(zhí)行任務(wù)、基于RESTful服務(wù)異步回調(diào)告知任務(wù)調(diào)度引擎任務(wù)的調(diào)度狀態(tài), 及時通知任務(wù)調(diào)度引擎釋放任務(wù)調(diào)度服務(wù)的調(diào)度線程, 避免任務(wù)調(diào)度延遲和調(diào)度服務(wù)資源占用.
本文描述的高可用并行任務(wù)調(diào)度框架如圖1所示,其主要具備如下特征.
(1) 支持多租戶定制個性化的調(diào)度任務(wù), 租戶可以申請任務(wù)調(diào)度服務(wù)集群中的子集為指定應(yīng)用系統(tǒng)提供任務(wù)調(diào)度服務(wù).
(2) 調(diào)度引擎和執(zhí)行任務(wù)分開部署: 任務(wù)調(diào)度的引擎與執(zhí)行任務(wù)需要分開部署, 目的是提高任務(wù)引擎的穩(wěn)定性, 即使二次開發(fā)編寫的任務(wù)組件不穩(wěn)定, 也不影響任務(wù)引擎的穩(wěn)定運(yùn)行, 另外也是為了減輕任務(wù)引擎應(yīng)用服務(wù)的壓力.
(3) 異步并行調(diào)度: 調(diào)度引擎異步并行調(diào)度任務(wù),調(diào)度引擎在調(diào)用遠(yuǎn)程RESTful的任務(wù)組件時, 遠(yuǎn)程執(zhí)行組件分發(fā)器接收到調(diào)用的消息后, 從線程池中獲取一個可用的線程執(zhí)行任務(wù), 任務(wù)分發(fā)器非阻塞調(diào)用執(zhí)行組件, 立即返回引擎的調(diào)用, 節(jié)約了引擎中線程池的可用線程, 當(dāng)遠(yuǎn)程任務(wù)分發(fā)器執(zhí)行任務(wù)完成, 則將執(zhí)行結(jié)果通知給引擎, 引擎收到通知后在任務(wù)實例日志表中記錄任務(wù)實例執(zhí)行情況, 如任務(wù)執(zhí)行時長、執(zhí)行結(jié)果、執(zhí)行的異常信息等.
圖1 多租戶高可用并行任務(wù)調(diào)度框架
(4) 任務(wù)定義模式: 通過任務(wù)執(zhí)行組件接口約束自定義任務(wù), 任務(wù)定義采用RESTful服務(wù)模式和本地服務(wù)組件, 但是為了服務(wù)的穩(wěn)定性, 推薦使用RESTful服務(wù)模式, RESTful服務(wù)組件支持異步調(diào)用,每一個任務(wù)定義都是一個RESTful資源映射. 在RESTful資源類中分別啟動本地應(yīng)用線程、將啟動成功或失敗結(jié)果告知調(diào)度引擎, 使用創(chuàng)建的應(yīng)用線程執(zhí)行任務(wù), 并用日志記錄執(zhí)行異常信息.
(5) 監(jiān)控分析告警: 引擎中的任務(wù)在后臺調(diào)度執(zhí)行, 無法通過前臺查看任務(wù)的調(diào)用和執(zhí)行結(jié)果, 因此在后臺記錄任務(wù)實例日志及消息總線推送告警兩種方式, 通過查看任務(wù)實例日志可分析任務(wù)在什么時間點(diǎn)被調(diào)度, 以及執(zhí)行的時長、執(zhí)行是否成功和執(zhí)行的異常信息等. 對執(zhí)行任務(wù)超時未完成、任務(wù)超時未開始等信息發(fā)送到消息總線ActiveMQ[3], 由消息總線推送到前端進(jìn)行告警消息展示.
(6) 任務(wù)之間的靈活依賴: 具有依賴關(guān)系的任務(wù)調(diào)度在傳統(tǒng)調(diào)度策略中的研究由來已久[4], 典型的依賴任務(wù)調(diào)度模型都是建立在圖的基礎(chǔ)之上[5,6], MTHPT可將任意一個任務(wù)作為自己的父任務(wù)進(jìn)行依賴觸發(fā).
(7) 調(diào)度服務(wù)集群與失效轉(zhuǎn)移: 任務(wù)引擎的集群是多套任務(wù)引擎服務(wù)連接同一個數(shù)據(jù)庫, 任務(wù)引擎服務(wù)基于數(shù)據(jù)庫資源鎖的機(jī)制實現(xiàn)任務(wù)獲取, 集群中任務(wù)調(diào)度服務(wù)爭搶已定義的定時任務(wù), 任務(wù)調(diào)度服務(wù)集群中主機(jī)出現(xiàn)異常時, 不影響已執(zhí)行調(diào)度任務(wù)的作業(yè)執(zhí)行, 集群中其它任務(wù)調(diào)度服務(wù)正常接管調(diào)度服務(wù).
高可用并行任務(wù)調(diào)度框架的執(zhí)行流程任務(wù)調(diào)度分為八個步驟, 分別介紹如下.
(1) 編寫任務(wù)調(diào)度業(yè)務(wù)執(zhí)行組件Bean, 配置任務(wù)調(diào)度規(guī)則. 業(yè)務(wù)執(zhí)行組件根據(jù)MTHPT框架的執(zhí)行組件編寫規(guī)則, 實現(xiàn)MTHPT框架的任務(wù)執(zhí)行組件接口;完成組件定義后, 以租戶身份進(jìn)入任務(wù)管理視圖, 在管理視圖中配置租戶域的業(yè)務(wù)執(zhí)行組件類, 并編排任務(wù)調(diào)度執(zhí)行組件的依賴關(guān)系和執(zhí)行順序. 上述過程的定義結(jié)果通過數(shù)據(jù)表的方式存儲到任務(wù)定義存儲中.
(2) 任務(wù)調(diào)度節(jié)點(diǎn)從待執(zhí)行任務(wù)記錄表讀取記錄,根據(jù)任務(wù)調(diào)度規(guī)則在指定的時間點(diǎn)或周期內(nèi)從數(shù)據(jù)庫中讀取待執(zhí)行的任務(wù), 任務(wù)調(diào)度節(jié)點(diǎn)之間是爭搶的關(guān)系, 任務(wù)調(diào)度節(jié)點(diǎn)讀取任務(wù)記錄時鎖定任務(wù)記錄表,判斷當(dāng)前任務(wù)是否存在父任務(wù)或后繼任務(wù), 并遞歸查找所有關(guān)聯(lián)任務(wù)記錄, 將查找結(jié)果依據(jù)排序關(guān)系放到任務(wù)隊列中, 然后將這些記錄的調(diào)度狀態(tài)字段值修改為正在調(diào)度, 然后釋放表鎖, 其它任務(wù)節(jié)點(diǎn)在讀取任務(wù)記錄時, 如果發(fā)現(xiàn)任務(wù)調(diào)度表中記錄狀態(tài)為正在調(diào)度, 則放棄本次調(diào)度, 順序查找可調(diào)度的下一個任務(wù),確保一個任務(wù)僅在一個任務(wù)節(jié)點(diǎn)上調(diào)度.
(3) 爭搶到任務(wù)記錄的任務(wù)調(diào)度節(jié)點(diǎn)啟動調(diào)度服務(wù)線程, 從任務(wù)隊列中依次取出任務(wù), 異步觸發(fā)部署在業(yè)務(wù)應(yīng)用節(jié)點(diǎn)上的框架執(zhí)行組件包裝器RESTful服務(wù)并執(zhí)行回調(diào)監(jiān)聽. MTHPT框架定義了框架執(zhí)行組件包裝器組件和任務(wù)執(zhí)行組件接口組件, 框架執(zhí)行組件包裝器組件中讀入?yún)?shù)中的業(yè)務(wù)執(zhí)行組件配置, 包裝器組件通過依賴反射的方式注入業(yè)務(wù)執(zhí)行組件, 在業(yè)務(wù)應(yīng)用部署節(jié)點(diǎn)應(yīng)用服務(wù)器中創(chuàng)建調(diào)度線程執(zhí)行任務(wù).
(4) 業(yè)務(wù)應(yīng)用部署節(jié)點(diǎn)應(yīng)用服務(wù)器線程創(chuàng)建成功,則由該應(yīng)用線程執(zhí)行業(yè)務(wù)執(zhí)行組件邏輯.
(5) 將業(yè)務(wù)應(yīng)用部署節(jié)點(diǎn)應(yīng)用服務(wù)器線程創(chuàng)建成功或失敗的消息提示發(fā)回給任務(wù)調(diào)度節(jié)點(diǎn)的調(diào)度服務(wù)線程.
(6) 任務(wù)調(diào)度節(jié)點(diǎn)線程根據(jù)成功或失敗的消息提示, 如果成功則回收當(dāng)前調(diào)度服務(wù)線程, 如果失敗則執(zhí)行重新調(diào)度.
(7) 業(yè)務(wù)執(zhí)行組件邏輯在執(zhí)行業(yè)務(wù)邏輯過程中,將執(zhí)行完成或異常失敗等信息記錄在日志記錄中, 并同時將異常信息發(fā)往消息總線, 由消息總線推送到前端, 執(zhí)行完成后將任務(wù)執(zhí)行狀態(tài)修改為已完成.
(8) 分析監(jiān)控組件根據(jù)日志進(jìn)一步分析業(yè)務(wù)執(zhí)行組件的執(zhí)行情況, 提供監(jiān)視及分析視圖.
多租戶高可用并行任務(wù)調(diào)度框架 MTHPT 采用任務(wù)執(zhí)行組件接口限定自定義任務(wù)所必須實現(xiàn)的方法,框架調(diào)度引擎僅對框架封裝的任務(wù)執(zhí)行組件包裝器組件進(jìn)行異步并行調(diào)用, 任務(wù)執(zhí)行組件包裝器組件實現(xiàn)了應(yīng)用線程的創(chuàng)建、任務(wù)定義時配置的自定義業(yè)務(wù)執(zhí)行組件的實例化和執(zhí)行, 異步回調(diào)通知等關(guān)鍵封裝, MTHPT框架會根據(jù)創(chuàng)建線程的結(jié)果, 快速返回調(diào)度引擎此次調(diào)度是否成功. 調(diào)度引擎在確定調(diào)度結(jié)果后,釋放調(diào)度服務(wù)的調(diào)度線程到線程池中. 已啟動的應(yīng)用線程執(zhí)行自定義任務(wù)組件, 當(dāng)執(zhí)行異常時用日志記錄并將異常信息發(fā)到消息總線由其推送到前端. 根據(jù)上述 MTHPT 的框架結(jié)構(gòu)的設(shè)計, MTHPT包含幾點(diǎn)主要關(guān)鍵技術(shù): ①任務(wù)定義和配置. 包括任務(wù)組件編寫、任務(wù)配置; ②異步并行任務(wù)調(diào)度模式; ③消息推送告警與監(jiān)視.
(a) 任務(wù)定義和配置
任務(wù)的模型定義是一個四元組, 可描述為TD=<TN, TS, TR, BE>, 其中TN為租戶, TS是任務(wù)服務(wù), TR是任務(wù)調(diào)度規(guī)則, BE是業(yè)務(wù)執(zhí)行組件. 租戶申請需要使用的任務(wù)調(diào)度服務(wù), 服務(wù)可以由任務(wù)調(diào)度服務(wù)集群中的一個或多個節(jié)點(diǎn)組成, 通過統(tǒng)一的任務(wù)調(diào)度規(guī)則配置視圖入口, 配置任務(wù)的調(diào)度周期、起止時間、觸發(fā)次數(shù)等規(guī)則, 在執(zhí)行組件的選擇上, 可以選擇已實現(xiàn)框架約定接口的本地業(yè)務(wù)執(zhí)行組件, 或者配置已實現(xiàn)框架約定接口的遠(yuǎn)程RESTful服務(wù)地址, 如圖2所示.
(b) 異步并行任務(wù)調(diào)度模式
當(dāng)任務(wù)執(zhí)行組件的定義采用遠(yuǎn)程RESTful服務(wù)定義時, 框架的任務(wù)執(zhí)行組件封裝器和業(yè)務(wù)執(zhí)行組件默認(rèn)與業(yè)務(wù)應(yīng)用服務(wù)合并部署, 作為業(yè)務(wù)應(yīng)用功能的一部分. 如果任務(wù)執(zhí)行組件的執(zhí)行比較消耗內(nèi)存等關(guān)鍵資源, 也可以將組件封裝器和業(yè)務(wù)執(zhí)行組件分開獨(dú)立部署.
圖2 任務(wù)定義和配置
任務(wù)調(diào)度服務(wù)中的任務(wù)調(diào)度器從數(shù)據(jù)庫中讀取并實例化任務(wù)及任務(wù)調(diào)度規(guī)則, 每個任務(wù)都對應(yīng)一個子任務(wù)隊列, 子任務(wù)隊列中的任務(wù)以同步的方式順序執(zhí)行, 任務(wù)調(diào)度器異步并行調(diào)用每個任務(wù)對應(yīng)的子任務(wù)隊列中的子任務(wù), 觸發(fā)子任務(wù)的執(zhí)行組件封裝器的RESTful服務(wù)接口, 等待組件封裝器的執(zhí)行結(jié)果, 組件封裝器在創(chuàng)建線程后即可將創(chuàng)建成功或失敗的消息返回給任務(wù)調(diào)度器, 任務(wù)調(diào)度器接收到成功消息后,回收調(diào)度線程, 在接收到失敗消息后, 重新執(zhí)行任務(wù).異步并行任務(wù)調(diào)度過程如圖3所示.
圖3 異步并行任務(wù)調(diào)度模式
為了實現(xiàn)任務(wù)編排功能, 任務(wù)執(zhí)行組件執(zhí)行完成后, 調(diào)用任務(wù)調(diào)度服務(wù)的更新任務(wù)狀態(tài)方法, 更新指定指定任務(wù)的子任務(wù)隊列中的子任務(wù)執(zhí)行狀態(tài), 如果子任務(wù)隊列中存在后續(xù)任務(wù), 則繼續(xù)觸發(fā)后續(xù)任務(wù)調(diào)度執(zhí)行.
本文利用自主設(shè)計加工的一種試驗裝置,測定了不同摻量粉煤灰混凝土的水和氣體(氮?dú)?滲透系數(shù);同時,用NMR測試了試驗混凝土的孔隙率及其孔徑分布等微觀結(jié)構(gòu)參數(shù)?;跍y試結(jié)果,研究了粉煤灰摻量對混凝土的水、氣體滲透性及微觀結(jié)構(gòu)參數(shù)的影響,分析了粉煤灰混凝土的水、氣體滲透性與其微觀結(jié)構(gòu)參數(shù)之間的關(guān)系。
(c) 消息推送告警與監(jiān)視
任務(wù)執(zhí)行過程出現(xiàn)異常時, 首先通過日志組件記錄異常信息, 并將異常信息發(fā)送到消息總線ActiveMQ上, 消息的發(fā)送采用發(fā)布/訂閱模式, 消息主題通過配置文件動態(tài)獲取, 前端任務(wù)異常提醒組件以websocket方式保持與ActiveMQ的長連接, 接收指定消息主題的推送文本并解析, 將解析的結(jié)果封裝后以彈窗方式提示給用戶.
對異常執(zhí)行的任務(wù)執(zhí)行組件日志進(jìn)行分析統(tǒng)計,提供日志監(jiān)視視圖對分析結(jié)果進(jìn)行展示, 能更直觀發(fā)現(xiàn)任務(wù)調(diào)度問題.
實驗測試環(huán)境由8臺8核8G內(nèi)存的PC服務(wù)器(HP DL 380 G4 378735-AA1)組成, 其中數(shù)據(jù)庫、任務(wù)調(diào)度服務(wù)、應(yīng)用服務(wù)主機(jī)比例為1:4:3, 數(shù)據(jù)庫和應(yīng)用服務(wù)采用國家電網(wǎng)公司設(shè)備(資產(chǎn))精益運(yùn)維管理系統(tǒng)的測試數(shù)據(jù)庫和應(yīng)用服務(wù), 任務(wù)調(diào)度服務(wù)分別以傳統(tǒng)的同步調(diào)度和MTHPT框架模式的異步調(diào)度模式各部署2臺, 任務(wù)調(diào)度服務(wù)和應(yīng)用服務(wù)都通過集群方式提供服務(wù), 調(diào)度任務(wù)的業(yè)務(wù)執(zhí)行組件是對設(shè)備(資產(chǎn))精益運(yùn)維管理系統(tǒng)已有的統(tǒng)計任務(wù)進(jìn)行修改, 實現(xiàn)了MTHPT框架的執(zhí)行組件接口, 以不同租戶身份登錄任務(wù)調(diào)度管理視圖后分別以十分鐘、半小時、一小時、一天為調(diào)度周期配置調(diào)度規(guī)則, 觀察統(tǒng)計任務(wù)的調(diào)度效率和穩(wěn)定性.
經(jīng)過兩周的高負(fù)荷運(yùn)行, 根據(jù)記錄的異常日志等信息, 統(tǒng)計分析如表1所示.
表1 傳統(tǒng)任務(wù)調(diào)度和MTHPT調(diào)度模式的實驗數(shù)據(jù)對比
表中實驗數(shù)據(jù)表明, MTHPT任務(wù)調(diào)度框架增強(qiáng)了任務(wù)調(diào)度服務(wù)的穩(wěn)定性, 避免了任務(wù)調(diào)度延遲, 提高了調(diào)度效率. 但也發(fā)現(xiàn)了一些問題, 具體如下:
(1) 任務(wù)執(zhí)行組件在執(zhí)行結(jié)束后要調(diào)用任務(wù)回調(diào)器更新任務(wù)狀態(tài), 任務(wù)狀態(tài)更新后并未及時反映到任務(wù)監(jiān)視視圖中.
(2) 任務(wù)中的子任務(wù)隊列在發(fā)生任務(wù)調(diào)度異常時,需要對子任務(wù)隊列中的任務(wù)重新執(zhí)行, 造成一定的資源浪費(fèi).
(3) 將需要實時處理的任務(wù)放入子任務(wù)隊列中,會影響實時性.
目前, 多租戶高可用任務(wù)調(diào)度框架MTHPT已在國家電網(wǎng)公司統(tǒng)一應(yīng)用平臺(SG-UAP)中實現(xiàn)并大規(guī)模推廣應(yīng)用, 取得了較好的應(yīng)用效果.
本文研究了傳統(tǒng)的任務(wù)調(diào)度策略和任務(wù)調(diào)度模式,在此基礎(chǔ)上, 設(shè)計了多租戶高可用并行任務(wù)調(diào)度框架,給出了任務(wù)調(diào)度定義模式和調(diào)度引擎優(yōu)化方法, 闡述了該框架的架構(gòu)設(shè)計以及關(guān)鍵實現(xiàn)技術(shù). 最后, 以基于國家電網(wǎng)公司設(shè)備(資產(chǎn))精益運(yùn)維管理系統(tǒng)的應(yīng)用運(yùn)行實例為背景, 給出一個多租戶多任務(wù)并行任務(wù)定義、業(yè)務(wù)執(zhí)行組件接口和任務(wù)調(diào)度的實現(xiàn)過程. 實驗結(jié)果、 效率評估及生產(chǎn)運(yùn)行實踐表明, MTHPT 提升了任務(wù)調(diào)度服務(wù)的調(diào)度效率和穩(wěn)定性, 提高了生產(chǎn)應(yīng)用信息系統(tǒng)的服務(wù)水平. 后續(xù)將針對遺留問題持續(xù)改進(jìn)MTHPT框架.
1 Liu CL, Layland JW. Scheduling algorithms for multiprogramming in a hard-real-time environment. Journal of the ACM, 1973, 20(1): 46–61.
2 蒲汛,杜嘉,盧顯良.基于用戶優(yōu)先級的云計算任務(wù)調(diào)度策略.計算機(jī)工程,2013,39(8):155–159.
3 The Apache Fundation. Apache ActiveMQ. http://activemq. apache.org/. [2016-04].
4 Nejad MM, Mashsyekhy L, Grosu D. Truthful greedy mechanisms for dynamic virtual machine provisioning and allocation in clouds. IEEE Trans. on Parallel and Distributed Systems, 2014, (99): 1–5.
5 Sih GC, Lee EA. A compile-time scheduling heuristic for interconnection constrained heterogeneous processor architectures. IEEE Trans. on Parallel and Distributed Systems, 1993, 4(2): 175–187.
6杜曉麗,蔣昌俊,徐國榮,等.一種基于模糊聚類的網(wǎng)格DAG任務(wù)圖調(diào)度算法.軟件學(xué)報,2006,17(11):2277–2288.
Multi-Tenant High Availability Parallel Task Scheduling Framework
LIU Yi-Tian, LIU Shi-Jin
(NARI Group Corporation(State Grid Electric Power Research Institute), Nanjing 210037, China)
This paper describes design ideas, architecture and implementation techniques of a kind of multi-tenant high availability parallel task scheduling framework named MTHPT. It consists of three parts: task definition and configuration, asynchronous parallel task scheduling mode, alarm messages and monitoring. Task scheduling engine and task execution components use separate deployments, asynchronous parallel scheduling and fast callback mode, quick releasing thread resource scheduling engine, which can solve such issues as: part of the task long implementation cycle, timed task that can not be performed on time and other issues that affect the business performance of the system. Task scheduling configuration provides a multi-tenant application model. Experimental analysis and assessment show that MTHPT improves the efficiency and stability of task parallel scheduling application system.
multi-tenant; high availability; asynchronous dispatch
國家電網(wǎng)公司科技項目“基于分布式技術(shù)的業(yè)務(wù)系統(tǒng)架構(gòu)研究”
2016-05-29;收到修改稿時間:2016-07-25
10.15888/j.cnki.csa.005645