為什么說 PowerJob 是新一代分布式任務調度框架?
大家好,我是君哥。
主流的任務調度框架并不少,比如 Quartz、Spring Batch、xxl-job、PowerJob 等。PowerJob 被稱為是全新一代分布式任務調度與計算框架,今天來聊一聊這個框架。
1.使用簡單
PowerJob 的使用非常簡單,搭建 PowerJob 環境,可以采用容器或 jar 包方式進行部署。使用容器方式更簡單一些。可以參考官方的容器部署方法:
https://www.yuque.com/powerjob/guidence/docker-compose
這里我采用本地啟動工程的方式來進行講解。首先下載 PowerJob 源碼,命令如下:
git clone https://github.com/PowerJob/PowerJob.git
下載到本地后用 idea 打開,powerjob-server 就是 PowerJob 的服務端源碼。編譯通過后,修改數據庫連接信息,如下圖:
修改完成后,就可以啟動服務了。這是一個 Springboot 工程,啟動類在 PowerJobServerApplication.java。
服務啟動后,在瀏覽器輸入地址 ,就可以訪問了。
http://localhost:7700/
先創建一個用戶,然后登錄進去,再創建一個應用,就可以體驗了。
創建應用
應用列表
進入應用
可以看到,Powerjob 的使用真的是非常簡單。
2.產品對比
下圖來自 PowerJob 官網,是 PowerJob 跟同類產品的對比。
2.1 定時任務
新建一個任務,如下圖:
從最新版本的配置界面看,PowerJob 定時任務支持 6 種,如下圖:
除了常見的 API、CRON、固定頻率、固定延遲外,PowerJob 還支持工作流和每日固定間隔這 2 個方式。下圖是每日固定間隔的配置:
PowerJob 引入工作流類型的定時任務,支持在線配置任務依賴關系(DAG),以可視化的方式對任務進行編排,同時還支持上下游任務間的數據傳遞,以及多種節點類型(判斷節點 & 嵌套工作流節點)。工作流管理見下圖:
2.2 生命周期
生命周期的配置在很多業務場景下是比較有用的。比如跟一個三方公司的合作時間是 1 年,一年后任務自動停止。
2.3 調度方式
在調度方式上,PowerJob 摒棄了傳統調度框架基于數據庫鎖的設計,采用無鎖化的設計方式,性能大幅度提升。
2.4 執行配置
在執行配置方面,PowerJob 支持單機執行、廣播執行、Map 執行、MapReduce 執行。
單機執行表示只有一個節點執行任務,廣播執行則是所有節點都執行這個任務。
Map 執行表示將數據拆分成多個子任務,交給多個分布式節點進行執行,以提高執行效率。
MapReduce 執行是使用 MapReduce 的大數據處理能力,通過分組計算然后合并來提升執行效率,主要用于復雜的大數據場景。
2.5 運行時配置
運行時配置支持 HEALTH_FIRST、RANDOM 和 SPCIFY 三種類型。HEALTH_FIRST 會查找第一個健康的節點來運行。RANDOM 表示隨機選擇一個節點來運行。SPCIFY 則是指定一個節點來運行。
2.6 數據庫支持
PowerJob 支持任意 Spring Data Jpa支持的關系型數據庫,只需要修改配置文件就可以使用。
2.7 監控告警
任務調度往往有很多大數據和批量作業的需求,這些需求對業務來說非常重要,出問題后影響范圍也比較大 。能通過監控告警及時讓運維和研發感知到任務執行結果是很有必要的。
PowerJob 支持郵件告警,并通過接口來提供擴展,使用的公司可以擴展接入自己的 OA 消息,方便地通知到責任人。
3.總結
技術發展到現在,主流的任務調度框架已經可以滿足 90% 以上的使用場景了。新一代的任務調度框架,一定要具備解決復雜業務問題的能力,而且性能也要更加優秀,使用簡單靈活。從這些方面講,PowerJob 可以稱得上是新一代的分布式任務調度框架了。