引言
今天跟大家分享一個(gè)能夠在工業(yè)物聯(lián)網(wǎng)系統(tǒng)內(nèi)實(shí)現(xiàn)接入設(shè)備的定時(shí)任務(wù)調(diào)度框架——PowerJob,此框架主要功能如下:
1. 使用簡(jiǎn)單:提供前端Web界面,允許開發(fā)者可視化地完成調(diào)度任務(wù)的管理(增、刪、改、查)、任務(wù)運(yùn)行狀態(tài)監(jiān)控和運(yùn)行日志查看等功能。
2. 定時(shí)策略完善:支持 CRON 表達(dá)式、固定頻率、固定延遲和API四種定時(shí)調(diào)度策略。
3. 執(zhí)行模式豐富:支持單機(jī)、廣播、Map、MapReduce 四種執(zhí)行模式,其中 Map/MapReduce 處理器能使開發(fā)者寥寥數(shù)行代碼便獲得集群分布式計(jì)算的能力。
4. 工作流支持:支持在線配置任務(wù)依賴關(guān)系(DAG),以可視化的方式對(duì)任務(wù)進(jìn)行編排,同時(shí)還支持上下游任務(wù)間的數(shù)據(jù)傳遞,以及多種節(jié)點(diǎn)類型(判斷節(jié)點(diǎn) & 嵌套工作流節(jié)點(diǎn))。
5. 執(zhí)行器支持廣泛:支持 Spring Bean、內(nèi)置/外置 Java 類,另外可以通過引入官方提供的依賴包,一鍵集成 Shell、Python、HTTP、SQL 等處理器,應(yīng)用范圍廣。
6. 運(yùn)維便捷:支持在線日志功能,執(zhí)行器產(chǎn)生的日志可以在前端控制臺(tái)頁(yè)面實(shí)時(shí)顯示,降低 debug 成本,極大地提高開發(fā)效率。
7. 依賴精簡(jiǎn):最小僅依賴關(guān)系型數(shù)據(jù)庫(kù)(MySQL/PostgreSQL/Oracle/MS SQLServer...)。
8. 高可用 & 高性能:調(diào)度服務(wù)器經(jīng)過精心設(shè)計(jì),一改其他調(diào)度框架基于數(shù)據(jù)庫(kù)鎖的策略,實(shí)現(xiàn)了無(wú)鎖化調(diào)度。部署多個(gè)調(diào)度服務(wù)器可以同時(shí)實(shí)現(xiàn)高可用和性能的提升(支持無(wú)限的水平擴(kuò)展)。
9. 故障轉(zhuǎn)移與恢復(fù):任務(wù)執(zhí)行失敗后,可根據(jù)配置的重試策略完成重試,只要執(zhí)行器集群有足夠的計(jì)算節(jié)點(diǎn),任務(wù)就能順利完成。
同類型產(chǎn)品對(duì)比
快速入門
1. 初始化項(xiàng)目
可通過git拉取官方demo工程進(jìn)行學(xué)習(xí),地址:git clone https://github.com/PowerJob/PowerJob.git。
2. 導(dǎo)入idea
3. 基礎(chǔ)架構(gòu)
如上圖所示,拉取工程之后其中powerjob-server是調(diào)度服務(wù)器,提供任務(wù)調(diào)度以及web端管理頁(yè)面功能,powerjob-worker-samples,為官方已經(jīng)編寫好的實(shí)例程序不做過多贅述,其中powerjob-work是我們需要編寫辨析任務(wù)邏輯的模塊。
4. 修改配置
在啟動(dòng)powerjob-server是需要修改其中application.properties文件。
5. 調(diào)度器,執(zhí)行器,處理器
修改完配置文件后,便可以在powerjob-work模塊中編寫代碼,整個(gè)框架,主要是分為調(diào)度器(server),執(zhí)行器(work),處理器(processor),其中我們所需要執(zhí)行的任務(wù)邏輯代碼便是在執(zhí)行器work工程中,創(chuàng)建類并繼承BasicProcessor ,BroadcastProcessor ,MapReduceProcessor ,三種處理器各有不同特性,分別為:
(1)單機(jī)處理器:單機(jī)執(zhí)行的策略下,server 會(huì)在所有可用 worker 中選取健康度最佳的機(jī)器進(jìn)行執(zhí)行。
(2)廣播處理器:廣播執(zhí)行的策略下,所有機(jī)器都會(huì)被調(diào)度執(zhí)行該任務(wù)。為了便于資源的準(zhǔn)備和釋放,廣播處理器在`BasicProcessor` 的基礎(chǔ)上額外增加了 `preProcess` 和 `postProcess` 方法,分別在整個(gè)集群開始之前/結(jié)束之后選一臺(tái)機(jī)器執(zhí)行相關(guān)方法。
(3) 并行處理器:MapReduce 是最復(fù)雜也是最強(qiáng)大的一種執(zhí)行器,它允許開發(fā)者完成任務(wù)的拆分,將子任務(wù)派發(fā)到集群中其他Worker 執(zhí)行,是執(zhí)行大批量處理任務(wù)的不二之選。
本文為演示作用,采用單機(jī)處理器BasicProcessor
編寫完處理器邏輯代碼之后便可以,啟動(dòng)work工程模塊,并且登錄web任務(wù)管理頁(yè)面創(chuàng)建任務(wù),并選定處理器執(zhí)行任務(wù)。
6.web管理頁(yè)面
新建任務(wù)
可按照下圖配置任務(wù)信息
任務(wù)運(yùn)行
前往任務(wù)實(shí)例頁(yè)面便可以查看任務(wù)詳細(xì)運(yùn)行情況