Elasticjob安裝與入門

 

Elasticjob是一個開源的分佈式調度解決方案。Elasticjob由兩個相互獨立的子項目Elastic-Job-Lite和Elastic-Job-Cloud組成。Elastic-Job-Lite定位爲輕量級無中心化解決方案,使用jar包的形式提供分佈式任務的協調服務;Elastic-Job-Cloud採用自研Mesos Framework的解決方案,額外提供資源治理、應用分發以及進程隔離等功能。

值得八卦的是,github上Elasticjob的Title已經隱去了噹噹的商標,而author的Title也已轉向了京東,難道跟噹噹的“賣身”有關?而github版本已由release版2.1.5大躍進成3.0.0.M1開發版,是要斷舍離,再出發的節奏嗎?

現在主要介紹Elastic-Job-Lite,它支持多種任務類型,支持任務分片,可以將任務拆分成多個子任務,像原先介紹的Quartz集羣方案中可能存在的任務處理的單機極限問題,可以利用Elastic-Job-Lite解決,可以通過預先分配分片項參數,任務分片後,每個分片任務只處理跟自己相關的分片數據,這樣就可以將單機處理的數據,分散成多機處理,緩解壓力。Elastic-Job還支持分片級別的故障切換,具有容錯性,一個分片任務故障後,可以被其他機器的任務接管,繼續執行分片任務。

文章目錄 [顯示]

實現原理

作業啓動

下面摘自官網鏈接的實現原理解析圖。Elastic-Job-Lite依賴註冊中心來感知作業節點間的關係,選舉主節點來分配分片項。作業服務器啓動後,會持久化作業任務到註冊中心,作業任務的添加是由作業服務器啓動來完成。它的控制檯頁面也沒有作業添加的功能。
job_start

作業執行

Elastic-Job-Lite內核是quartz,它默認實現了quartz job接口的任務適配器,抓取分片後,從JobDataMap中取出不同的任務類型,進行分發處理。

job_exec

下載安裝

從github官網上https://github.com/elasticjob/elastic-job-lite下載源碼,可以選擇導入elastic-job-lite工程到IDE開發環境,子模塊elastic-job-lite-console爲控制檯界面管理工程,用maven管理,mvn install在idea是可以直接編譯成功的,但eclipse卻提示了gpg plugin報錯,可以選擇去掉maven-gpg-plugin插件

maven-gpg-plugin

也可以選擇編譯時跳過插件mvn install -Dgpg.skip

解壓縮mvn install生成的elastic-job-lite-console-${version}.tar.gz並執行其中的啓動腳本bin\start.bat。打開瀏覽器訪問http://localhost:8899/即可訪問控制檯

默認提供了訪問賬號

類型 賬號
管理員 root/root
訪客 guest/guest

可以在elastic-job-lite-console的配置文件conf\auth.properties中修改賬號

elastic-job-lite-console

配置註冊中心

配置註冊中心地址,暫時只能是zookeeper。可以使用Elastic內置的zookeeper,也可以自己單獨啓動,這裏的指向地址要與項目啓動指向的註冊中心地址一致。

elasticjob-zookeeper

配置數據源

事件追蹤數據源配置,用於記錄任務歷史,只能是mysql類型數據庫,向地址要與項目啓動指向的事件追蹤數據源地址一致

elasticjob-log-database

項目啓動

下載https://github.com/elasticjob/elastic-job-example示例工程

elastic-job-example-lite-springboot工程,application.yml修改註冊中心地址,事件追蹤數據源地址,配置作業任務的分片項參數和分片總數以及Cron表達式等等,com.dangdang.ddframe.job.example.SpringBootMain 項目啓動:

elastic-job-example-springboot

在控制檯上可以查看已經註冊的作業任務和作業服務器

elasticjob-springboot-start

作業詳情

查看作業詳情,可以查看分片項執行的情況

elasticjob-detail

任務失效

可以將任務失效爲暫停狀態,已失效任務可以重新生效。

elsticjob-disable

作業修改

作業修改,可以修改作業的cron表達式,作業分片數等等。

elasticjob-update

對於已失效或生效任務,可以選擇觸發任務,進行手動觸發任務一次,而無需等待觸發時間的到來,但對於終止任務,一旦終止,任務就完全作廢了

作業日誌

可以查看任務觸發的日誌,查看任務執行結果。

elasticjob-log-history

可以查看任務的歷史狀態,是等待運行,還是運行中,還是已完成等待。

elaticjob-log-status

總之,Elasticjob解決了quartz的單機極限痛點,是對quartz的一種擴展和優化。

參考

官網:http://elasticjob.io/docs/elastic-job-lite/00-overview

Github地址:https://github.com/elasticjob

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章