2022 年 4 月 22 日,Apache DolphinScheduler 正式宣佈 3.0.0 alpha 版本釋出!此次版本升級迎來了自發版以來的最大變化,眾多全新功能和特性為使用者帶來新的體驗和價值。
3.0.0-alpha 的關鍵字,總結起來是 “更快、更現代化、更強、更易維護”。
- 更快、更現代化:重構了 UI 介面,新 UI 不僅使用者響應速度提高數十倍,開發者構建速度也提高數百倍,且頁面佈局、圖示樣式都更加現代化;
- 更強:帶來了許多振奮人心的新功能,如資料質量評估、自定義時區、支援 AWS,並新增多個任務外掛和多個告警外掛;
- 更易維護:後端服務拆分更加符合容器化和微服務化的發展趨勢,還能明確各個服務的職責,讓維護更加簡單。
新功能和新特性
1、全新 UI,前端程式碼更健壯,速度更快
3.0.0-alpha 最大的變化是引入了新的 UI,切換語言頁面無需重新載入,並且新增了深色主題。新 UI 使用了 Vue3、TSX、Vite 相關技術棧。對比舊版 UI,新 UI 不僅更加現代化,操作也更加人性化,前端的魯棒性也更強,使使用者在編譯時一旦發現程式碼中的問題,可以對介面引數進行校驗,從而使前端程式碼更加健壯。
此外,新架構和新技術棧不僅能讓使用者在操作 Apache DolphinScheduler 時響應速度有數十倍的提升,同時開發者本地編譯和啟動 UI 的速度有了數百倍的提升,這將大大縮短開發者除錯和打包程式碼所需的時間。
新 UI 使用體驗:
本地啟動耗時對比
首頁
工作流例項頁面
Shell 任務頁面
MySQL 資料來源頁面
2、支援 AWS
隨著 Apache DolphinScheduler 使用者群體越來越豐富,吸引了很多海外使用者。但在海外業務場景下,使用者在調研過程中發現有兩個影響使用者便捷體驗 Apache DolphinScheduler 的點,一個是時區問題,另一個則是對海外雲廠商,尤其是對 AWS 的支援不足。為此,我們決定對AWS 較為重要的元件進行支援,這也是此版本的最重大的變化之一。
目前,Apache DolphinScheduler 對 AWS 的支援已經涵蓋 Amazon EMR 和 Amazon Redshift 兩個 AWS 的任務型別,並實現了資源中心支援 Amazon S3 儲存。
- 針對 Amazon EMR,我們建立了一個新的任務型別,並提供了其 Run Job Flow 的功能,允許使用者向 Amazon EMR 提交多個 steps 作業,並指定使用的資源數量。詳情可見:https://dolphinscheduler.apac...
Amazon EMR 任務定義
- 對於 Amazon Redshift,我們目前在 SQL 任務型別中擴充套件了對 Amazon Redshift 資料來源的支援,現在使用者可以在 SQL 任務中選擇 Redshift 資料來源來執行 Amazon Redshift 任務。
- 對於 Amazon S3,我們擴充套件了 Apache DolphinScheduler 的資源中心,使其不僅能支援本地資源、HDFS 資源儲存,同時支援 Amazon S3 作為資源中心的儲存。詳情可見:https://dolphinscheduler.apac... 中的
resource.storage.type
後續我們將使用者的實際需求支援更多 AWS 任務,敬請期待。
3、服務拆分
全新的 UI 是 3.0.0-alpha 前端的最大變化,而後端最大的變化就是對服務進行拆分。考慮到容器和微服務的概念越來越火熱,Apache DolphinScheduler 開發者做出了重大決定:對後端服務進行拆分。按照職能,我們將服務拆分成了以下幾部分:
- master-server: master服務
- worker-server: worker服務
- api-server: API服務
- alert-server: 告警服務
- standalone-server: standalone用於快速體驗 dolphinscheduler 功能
- ui: UI資源
- bin: 快速啟動指令碼,主要是啟動各個服務的指令碼
- tools: 工具相關指令碼,主要包含資料庫建立,更新指令碼
所有的服務都可以通過執行下面的命令進行啟動或者停止。
bin/dolphinscheduler-daemon.sh <start|stop> <server-name>
4、資料質量校驗
此版本中,使用者期待已久的資料質量校驗應用功能上線,解決了從源頭同步的資料條數準確性,單表或多表周均、月均波動超過閾值告警等資料質量問題。Apache DolphinScheduler 此前版本解決了將任務以特定順序和時間執行的問題,但資料執行完之後對資料的質量一直沒有較為通用的衡量標準,使用者需要付出額外的開發成本。
現在,3.0.0-alpha 已經實現了資料質量原生支援,支援在工作流執行前進行資料質量校驗過程,通過在資料質量功能模組中,由使用者自定義資料質量的校驗規則,實現了任務執行過程中對資料質量的嚴格控制和執行結果的監控。
5、任務組
任務組主要用於控制任務例項併發並明確組內優先順序。使用者在新建任務定義時,可配置當前任務對應的任務組,並配置任務在任務組內執行的優先順序。當任務配置了任務組後,任務的執行除了要滿足上游任務全部成功外,還需要滿足當前任務組正在執行的任務小於資源池的大小。當大於或者等於資源池大小時,任務會進入等待狀態等待下一次檢查。當任務組中多個任務同時進到待執行佇列中時,會先執行優先順序高的任務。
詳見連結:https://dolphinscheduler.apac...
6、自定義時區
在 3.0.0-alpha 之前版本,Apache DolphinScheduler 預設的時間是 UTC+8 時區,但隨著使用者群體擴大,海外使用者和在海外開展跨時區業務的使用者在使用中經常被時區所困擾。3.0.0-alpha 支援時區切換後,時區問題迎刃而解,滿足了海外使用者和出海業務夥伴的需求。例如,如當企業業務涉及的時區包含東八區和西五區,如果想要使用同一個 DolphinScheduler 叢集,可以分別建立多個使用者,每個使用者使用自己當地的時區,對應 DolphinScheduler 物件顯示的時間均會切換為對應時區的當地時間,更加符合當地開發者的使用習慣。
詳見連結:https://dolphinscheduler.apac...
7、任務定義列表
使用 Apache DolphinScheduler 3.0.0-alpha 此前版本,使用者如果想要操作任務,需要先找到對應的工作流,並在工作流中定位到任務的位置之後才能編輯。然而,當工作流數量變多或單個工作流有較多的任務時,找到對應任務的過程將會變得非常痛苦,這不符合 Apache DolphinScheduler 所追求的 easy to use 理念。所以,我們在 3.0.0-alpha 中增加了任務定義頁面,讓使用者可以通過任務名稱快速定位到任務,並對任務進行操作,輕鬆實現批量任務變更。
詳見連結:https://dolphinscheduler.apac...
8、新增告警型別
與此同時,3.0.0-alpha 告警型別也增加了對 Telegram、Webexteams 告警型別的支援。
9、Python API 新功能
3.0.0-alpha 中,Python API 最大的變化是將對應的 PythonGatewayServer 整合到了 API-Server 服務,使得開啟對外服務更加規整,且緩解了因服務拆分導致的二進位制包變大的問題。同時,Python API 還增加了 CLI 和 configuration 模組,讓使用者可以自定義配置檔案,修改配置更加便捷。
10、其他新功能
除了上述功能外,3.0.0-alpha 版本還進行了很多細節功能增強,如重構任務外掛、資料來源外掛模組,讓擴充套件更簡單;恢復了對 Spark SQL 的支援;E2E 測試已經完美相容新 UI 等。
主要優化項
[#8584] 任務後端外掛優化,新外掛只需要修改外掛自帶的模組
[#8874] 在工作流下提交/建立 cron 時驗證結束時間和開始時間
[#9016] Dependent 新增依賴時可以選擇全域性專案
[#9221] AlertSender 優化及關閉優化,如 MasterServer
[#9228] 實現使用 slot 掃描資料庫
[#9230] python gateway server 整合到 apiserver 來減少二進位制包大小
[#9372] [python] 將 pythonGatewayServer 遷移到 api 伺服器
[#9443] [python] 新增缺失的配置和連線遠端伺服器文件
[#8719] [Master/Worker] 將任務 ack 更改為執行回撥
[#9293] [Master] 新增任務事件執行緒池
主要 Bug 修復
[#7236] 修復使用 S3a Minio 建立租戶失敗的問題
[#7416] 修復文字檔案 busy 的問題
[#7896] 修復專案授權時生成一個重複授權專案的問題
[#8089] 修復因無法連線到 PostgreSQL 而啟動伺服器失敗的問題
[#8183] 修復訊息顯示找不到資料來源外掛“Spark”的問題
[#8202] 修復 MapReduce 生成的命令內建引數位置錯誤的問題
[#8751] 解決更改引數使用者,佇列在 ProcessDefinition 中失效的問題
[#8756] 解決使用依賴元件的程式無法在測試和生產環境之間遷移
[#8760] 解決了資原始檔刪除條件的問題
[#8791] 修復編輯複製節點的表單時影響原始節點資料的問題
[#8951] 解決了 Worker 資源耗盡並導致停機的問題
[#9243] 解決了某些型別的警報無法顯示專案名稱的問題
Release Note
https://github.com/apache/dol...
感謝貢獻者
按首字母排序
Aaron Lin, Amy0104, Assert, BaoLiang, Benedict Jin, BenjaminWenqiYu, Brennan Fox, Devosend, DingPengfei, DuChaoJiaYou, EdwardYang, Eric Gao, Frank Chen, GaoTianDuo, HanayoZz, Hua Jiang, Ivan0626, Jeff Zhan, Jiajie Zhong, JieguangZhou, Jiezhi.G, JinYong Li, J·Y, Kerwin, Kevin.Shin, KingsleyY, Kirs, KyoYang, LinKai, LiuBodong, Manhua, Martin Huang, Maxwell, Molin Wang, OS, QuakeWang, ReonYu, SbloodyS, Shiwen Cheng, ShuiMuNianHuaLP, ShuoTiann, Sunny Lei, Tom, Tq, Wenjun Ruan, X&Z, XiaochenNan, Yanbin Lin, Yao WANG, Zonglei Dong, aCodingAddict, aaronlinv, caishunfeng, calvin, calvinit, cheney, chouc, gaojun2048, guoshupei, hjli, huangxiaohai, janeHe13, jegger, jon-qj, kezhenxu94, labbomb, lgcareer, lhjzmn, lidongdai, lifeng, lilyzhou, lvshaokang, lyq, mans2singh, mask, mazhong, mgduoduo, myangle1120, nobolity, ououtt, ouyangyewei, pinkhello, qianli2022, ronyang1985, seagle, shuai hou, simsicon, songjianet, sparklezzz, springmonster, uh001, wangbowen, wangqiang, wangxj3, wangyang, wangyizhi, wind, worry, xiangzihao, xiaodi wang, xiaoguaiguai, xuhhui, yangyunxi, yc322, yihong, yimaixinchen, zchong, zekai-li, zhang, zhangxinruu, zhanqian, zhuangchong, zhuxt2015, zixi0825, zwZjut,
天仇, 小張, 時光, 王強, 百歲, 弘樹, 張俊傑, 羅銘濤
參與貢獻
隨著國內開源的迅猛崛起,Apache DolphinScheduler 社群迎來蓬勃發展,為了做更好用、易用的排程,真誠歡迎熱愛開源的夥伴加入到開源社群中來,為中國開源崛起獻上一份自己的力量,讓本土開源走向全球。
參與 DolphinScheduler 社群有非常多的參與貢獻的方式,包括:
貢獻第一個PR(文件、程式碼) 我們也希望是簡單的,第一個PR用於熟悉提交的流程和社群協作以及感受社群的友好度。
社群彙總了以下適合新手的問題列表:https://github.com/apache/dol...
非新手問題列表:https://github.com/apache/dol...
如何參與貢獻連結:https://dolphinscheduler.apac...
來吧,DolphinScheduler開源社群需要您的參與,為中國開源崛起添磚加瓦吧,哪怕只是小小的一塊瓦,匯聚起來的力量也是巨大的。
參與開源可以近距離與各路高手切磋,迅速提升自己的技能,如果您想參與貢獻,我們有個貢獻者種子孵化群,可以新增社群小助手微信(Leonard-ds) ,手把手教會您( 貢獻者不分水平高低,有問必答,關鍵是有一顆願意貢獻的心 )。
新增小助手微信時請說明想參與貢獻。
來吧,開源社群非常期待您的參與。