PowerJob是新一代分布式任務調(diào)度與計算框架。軟件支持單機、廣播、Map、MapReduce四種執(zhí)行模式。支持在線日志功能,執(zhí)行器產(chǎn)生的日志可以在前端控制臺頁面實時顯示,降低debug成本,極大地提高開發(fā)效率,能夠滿足多個使用場景。
軟件特色
使用簡單:提供前端Web界面,允許開發(fā)者可視化地完成調(diào)度任務的管理(增、刪、改、查)、任務運行狀態(tài)監(jiān)控和運行日志查看等功能。
定時策略完善:支持CRON表達式、固定頻率、固定延遲和API四種定時調(diào)度策略。
執(zhí)行模式豐富:支持單機、廣播、Map、MapReduce四種執(zhí)行模式,其中Map/MapReduce處理器能使開發(fā)者寥寥數(shù)行代碼便獲得集群分布式計算的能力。
DAG工作流支持:支持在線配置任務依賴關系,可視化得對任務進行編排,同時還支持上下游任務間的數(shù)據(jù)傳遞
執(zhí)行器支持廣泛:支持Spring Bean、內(nèi)置/外置Java類、Shell、Python等處理器,應用范圍廣。
運維便捷:支持在線日志功能,執(zhí)行器產(chǎn)生的日志可以在前端控制臺頁面實時顯示,降低debug成本,極大地提高開發(fā)效率。
依賴精簡:最小僅依賴關系型數(shù)據(jù)庫(MySQL/Oracle/MS SQLServer.。。),擴展依賴為MongoDB(用于存儲龐大的在線日志)。
高可用&高性能:調(diào)度服務器經(jīng)過精心設計,一改其他調(diào)度框架基于數(shù)據(jù)庫鎖的策略,實現(xiàn)了無鎖化調(diào)度。部署多個調(diào)度服務器可以同時實現(xiàn)高可用和性能的提升(支持無限的水平擴展)。
故障轉(zhuǎn)移與恢復:任務執(zhí)行失敗后,可根據(jù)配置的重試策略完成重試,只要執(zhí)行器集群有足夠的計算節(jié)點,任務就能順利完成。
運用場景
有定時執(zhí)行需求的業(yè)務場景:如每天凌晨全量同步數(shù)據(jù)、生成業(yè)務報表等。
有需要全部機器一同執(zhí)行的業(yè)務場景:如使用廣播執(zhí)行模式清理集群日志。
有需要分布式處理的業(yè)務場景:比如需要更新一大批數(shù)據(jù),單機執(zhí)行耗時非常長,可以使用Map/MapReduce處理器完成任務的分發(fā),調(diào)動整個集群加速計算。
有需要延遲執(zhí)行某些任務的業(yè)務場景:比如訂單過期處理等。
升級指南
規(guī)范:語義化版本
為了避免后期維護困難,本框架需要時刻遵守如下準則:
版本格式:主版本號。次版本號。修訂號
遞增規(guī)則
1、主版本號:當做了不兼容的 API 修改
2、次版本號:當做了向下兼容的功能性新增
3、修訂號:當做了向下兼容的問題修正
非兼容版本升級
如何升級到不兼容的 PowerJob 版本?一句話描述:多版本并存。
1、獨立部署新版本的 powerjob-server,也就是版本升級階段新、舊調(diào)度中心并存,數(shù)據(jù)庫層面 PowerJob 不會做 BREAKING CHANGE(不兼容的改動),因此可以公用一個數(shù)據(jù)庫,不涉及數(shù)據(jù)的遷移。
2、推動搭載 powerjob-worker 的執(zhí)行器應用進行升級,分別升級依賴(jar 版本)和修改配置(連接到新版本的調(diào)度中心)。
3、測試、回歸、上線。
4、完成所有升級后,下線舊版本調(diào)度中心。