本文適合有 Java 基礎知識的人羣前端
做者:HelloGitHub-Salieripython
HelloGitHub 推出的《講解開源項目》系列。git
項目地址:github
https://github.com/KFCFans/PowerJobweb
PowerJob 的設計目標爲企業級的分佈式任務調度平臺,即成爲公司內部的調度中間件。整個公司統一部署調度中心 powerjob-server,旗下全部業務線應用只須要依賴 'powerjob-worker' 便可接入獲取任務調度與分佈式計算能力。spring
所以,PowerJob 由調度服務器(powerjob-server)和執行器(powerjob-worker)兩部分組成,powerjob-server 負責提供 Web 服務和完成任務的調度,powerjob-worker 則負責執行用戶所編寫的任務代碼,同時提供分佈式計算能力。mongodb
如下爲在本地開發環境快速搭建並試用 PowerJob 的教程。數據庫
git clone https://github.com/KFCFans/PowerJob.git
數組
導入 IDE,源碼結構以下,咱們須要啓動調度服務器(powerjob-server),同時在 samples 工程中編寫本身的處理器代碼服務器
建立數據庫(不須要建表,只須要建立數據庫)powerjob-daily
修改配置文件,配置文件的說明官方文檔寫的很是詳細,此處再也不贅述。因爲是在本地 IDE 搭建測試環境,所以咱們選擇使用開發環境的配置文件 application-daily.properties
來修改並使用。須要修改的地方爲數據庫配置:
spring.datasource.core.jdbc-url
spring.datasource.core.username
spring.datasource.core.password
spring.data.mongodb.uri
以獲取徹底版體驗。
完成配置文件的修改後,能夠直接經過啓動類 OhMyApplication
啓動調度服務器,觀察啓動日誌,查看是否啓動成功~啓動成功後,訪問 http://127.0.0.1:7700/ ,若是能順利出現 Web 界面,則說明調度服務器啓動成功!
註冊應用:點擊主頁應用註冊按鈕,填入 powerjob-agent-test
和控制檯密碼(用於進入控制檯),註冊示例應用(固然你也能夠註冊其餘的 appName,只是別忘記在示例程序中同步修改~)
進入示例工程(powerjob-worker-samples),修改配置文件鏈接 powerjob-server 並編寫本身的處理器代碼。
修改 powerjob-worker-samples 的啓動配置類 OhMySchedulerConfig
,將 appName
修改成剛剛在控制檯註冊的名稱。
編寫本身的處理器:在示例工程中新建一個類,繼承你想要使用的處理器(各個處理器的介紹可見官方文檔),這裏爲了簡單演示,選擇使用單機處理器 BasicProcessor
,如下代碼示例演示了在線日誌功能的使用。
@Slf4j
@Component public class StandaloneProcessorDemo implements BasicProcessor { @Override public ProcessResult process(TaskContext context) throws Exception { OmsLogger omsLogger = context.getOmsLogger(); omsLogger.info("start process,context is {}.", context); System.out.println("jobParams is " + context.getJobParams()); return new ProcessResult(true, "process successfully~"); } } 複製代碼
啓動示例程序,即直接運行主類 SampleApplication
,觀察控制檯輸出信息,判斷是否啓動成功。
調度服務器與示例工程都啓動完畢後,再次前往 Web 頁面( http://127.0.0.1:7700/ ),進行任務的配置與運行。
完成任務建立後,便可在控制檯看到剛纔建立的任務,若是以爲等待調度太過於漫長,能夠直接點擊運行按鈕,當即運行本任務。
前往任務示例邊欄,查看任務的運行狀態和在線日誌
TaskContext
對象的 jobParams 屬性)(進行一次處理器開發就能理解了)
由執行類型(單機、廣播和 MapReduce)、處理器類型和處理器參數組成,後兩項相互關聯。
com.github.kfcfans.oms.processors.demo.MapReduceProcessorDemo
)
18#com.github.kfcfans.oms.container.DemoProcessor
)
用來標明容許執行任務的機器狀態,避開那些風雨飄搖的機器,0 表明無任何限制。
192.168.1.1:27777,192.168.1.2:27777
選擇任務執行失敗後報警通知的對象,須要事先錄入。
基礎的教程到這裏也就結束了~更多功能示例可見官方文檔,工做流、MapReduce、容器等高級特性等你來探索!
本章詳細介紹了 PowerJob 的快速入門,根據本文可以快速搭建起本地開發/測試環境。下一章節,我將會對PowerJob 總體的架構作一個介紹,爲後面的技術剖析作準備。
那咱們下期再見嘍~
「常在河邊走,哪有不溼鞋」,然而,這句話在茶卡鹽湖卻屬於奢望。
稍有不慎,隱祕的鹽窟便對你敞開懷抱,瞬間將你吞噬~
鹽湖如此,人生亦是如此。
不免不幸時,也要對着美好的明天微笑~
關注公衆號加入交流羣(做者在 Java 羣)