非常歡迎大家來到Apache DolphinScheduler社區!隨著開源技術在全球範圍內的快速發展,社區的貢獻者 “同仁” 一直致力於構建一個強大而活躍的開源調度系統社區,為用戶提供高效、可靠的任務調度和工作流管理解決方案。 在過去的一段時間里,我們取得了一些重要的成就,但我們的願景遠未實現。為 ...
非常歡迎大家來到Apache DolphinScheduler社區!隨著開源技術在全球範圍內的快速發展,社區的貢獻者 “同仁” 一直致力於構建一個強大而活躍的開源調度系統社區,為用戶提供高效、可靠的任務調度和工作流管理解決方案。
在過去的一段時間里,我們取得了一些重要的成就,但我們的願景遠未實現。為了更好地滿足用戶需求和推動項目的發展,我們在2024 新春伊始,制定了以下Roadmap,將在未來的版本中實現一系列激動人心的功能和改進。
當前社區狀態
2024 年 roadmap 有兩個來源,部分是來自 2023 年發起但是沒有開始實施,或者實施了部分的議題,另一部分是最新新增的議題。2024 年 roadmap 可以分成如下幾個部分
雲原生相關: 我們希望增加 K8S executor 復用 K8S 提供的能力做彈性資源管理、監控和失敗重試等
任務插件增強: 我們收到了用戶關於任務插件的訴求,將會進一步支持 streaming 類型的任務、trigger 類型插件等,除此之外,我們還希望統一在worker 和master 中運行的任務、以及為任務插件增加生命周期的介面。於此同時我們會持續關註動態任務組件的功能,希望以後可以對任務組件單獨發版保證迭代頻率
DataOps 相關:希望引入 data ops 相關功能,通過集成 git 供應商來實現 git ops,最終實現工作流 CICD
測試: 我們會繼續完善和增加項目單元測試覆蓋率,並且逐步補充 API 部分的測試
其他優化:引入工作流事件觸發功能;優化審計日誌
雲原生相關
我們希望引入 K8S executor 作為 dispatcher 將 dolphinscheduler 的任務分發到 K8S 中,K8S executor 的好處是我們可以有更高的資源利用率;沿用 K8S 的監控機制,實現 pod level 的監控;沿用 pod 容錯做任務容錯。
這個設計的核心是將executor 的抽象出來變成可配置的, 用戶可以選擇 K8S 或者非 K8S 的 executor,如果選擇 K8S executor ,dolphinscheduler 會將任務提交到 K8S API server ,每個任務啟動一個 worker,運行一個 pod。這一點的好處是 worker 不是一個長期運行的資源,而是僅當有任務的時候才需要啟動。當業務低谷的時候,我們有空運行的worker 來等待任務運行。
詳情請看鏈接:https://github.com/apache/dolphinscheduler/issues/13316
任務插件增強
streaming 任務類型增強
2023年 dolphinscheduler 社區增加了 streaming 任務類型的支持,但是是使用shell 提交 flink 任務,一經推出收穫了不少用戶。當時實現的是一個簡單版本,想看看用戶反饋,開發者在開發過程,以及用戶的使用中發現了部分可優化項。這部分優化項目我們希望能在 2024 年有部分進展,其中包括
- 使用 flink sdk 去創建和提交任務,目前的 shell 方式提交不能很好的監控和處理運行中的任務,使用 sdk 可以有更多功能的支持,詳情請看鏈接: https://github.com/apache/dolphinscheduler/issues/11440
- 支持 flink sql
- 增加 flink 的指標
- 增加 checkpoints savepoint 管理,保證任務失敗重試等異常情況能繼續執行
詳情請查看 https://github.com/apache/dolphinscheduler/issues/11352
動態任務組件 & 任務單獨發版
這個任務是引入動態任務組件的概念,將任務組件的參數通過後端定義,然後在前端渲染,希望通過這樣方法化簡任務組件的開發流程,在參數的輸入類型沒有新增的情況下,可以不修改或者少修改前端代碼而實現任務組件的新增和修改。
詳情請看鏈接:https://github.com/apache/dolphinscheduler/issues/12526
同時這個任務也是我們將任務插件單獨發版的前置任務,任務插件單獨發版也是非常重要的功能,實現了這個功能後,我們可以加快任務插件的發版頻率,保證用戶使用的是功能豐富、最新的任務插件。例如我們有一個新的任務插件 A ,這個插件在昨天被 merge 到 dev 分支,那麼我們今天就能安排這個插件的發版。又例如我們發現了已經發版的任務插件 B 有比較嚴重的 bug,在 這個bug 被 fix 後,我們就能安排插件的bugfix 版本發版。
這個任務已經實現了已經簡單的demo,詳情請看鏈接: https://github.com/apache/dolphinscheduler/issues/12526
任務插件生命周期管理
為任務插件增加 close 方法從而更好的管理任務插件,特別是需要關閉資源的的任務組件,如資料庫、雲計算資源任務等。我們目前為任務插件定義了 init、handle、cancel 等方法,對於關閉資源的方法都是在任務中單獨實現的,所以希望抽象一個 close 方法統一處理需要關閉資源的任務。
詳情請看鏈接: https://github.com/apache/dolphinscheduler/issues/14877
統一 worker 和邏輯任務
dolphinscheduler 現在有兩個類型的任務 spi,分別是 worker 任務和邏輯任務,這兩種任務類型分別是運行在 worker 上的,以及運行在 master 上的。不同的 spi 導致兩種任務有不同的生命周期管理,並且不利於後面動態任務組件的實現,所以需要將兩種任務儘可能弄成統一spi。
詳情請看鏈接: https://github.com/apache/dolphinscheduler/issues/14823
Git Ops
dolphinscheduler 在處理生產和開發環境的時候,只能通過json導入導出來實現,社區部分伙伴建議我們可以使用 gitops 方法論來實現開發到生產環境的部署。GitOps 是一種基於版本控制系統的持續交付和基礎設施管理的方法。它的核心理念是將整個系統的狀態和配置存儲在版本控制庫中,通過Git的特性實現對系統的自動化管理和持續交付。
gitops 支持
希望將工作流相關資源的校驗、工作流部署到生產環境的功能集成到 dolphinscheduler 中,集成之後只需要在 dolphinscheduler 配置 git 供應商的 url 和鑒權信息,就能在遠程倉庫中有新的push 事件後,立馬觸發工作流的更新操作,從而保證生產中的工作流和遠端 git 供應商的定義是一樣的,實現客戶的 cicd ,保證流程簡單便捷
測試
測試對於開源軟體至關重要,它不僅確保軟體質量和穩定性,還提高了用戶體驗。通過全面的測試,可以及時發現和修複潛在的問題,增強軟體的可靠性。測試也是保證新功能引入不破壞現有功能的關鍵,為開源項目的可持續發展提供了堅實的基礎。dolphinscheduler 社區從 2023 年一直在努力提高測試覆蓋度、並做了優化讓貢獻者更加方便的寫測試,但是測試的增強是一個長期的工作,2024 年我們會堅持這部分內容
API 測試
在 api 層面的測試,確保我們核心的 api 介面能正常運行。當被 api 測試覆蓋的介面,可以確保每次提交新代碼時,API 介面邏輯和依賴關係都正確,不會破壞之前已有的功能。補充缺失的單元測試,確保介面與介面之間的連接性。dolphinscheduler 社區在 2023 年已經啟動 api 測試的補充,目前部分核心介面已經覆蓋,希望在 2024 年將儘可能多的 api 介面進行覆蓋。
詳情請看鏈接: https://github.com/apache/dolphinscheduler/issues/10411
UT 增強
單元測試對比 API 測試是粒度更加小的,他能保證部分代碼塊如預期般工作,在此之前我們升級到了 junit5,並且增加了worker 部分的測試覆蓋率,與 api 測試一樣的是,這是一個長期的工作,同時需要更多有激情的貢獻者參與到該功能的建設中。
詳情請看鏈接: https://github.com/apache/dolphinscheduler/issues/10573
其他優化
工作流 trigger 支持
引入 trigger 插件實現事件觸發,目前我們工作流的啟動方式有兩種,用戶手動觸發;定時觸發。事件觸發是希望增加其中的範圍,讓工作流可以被更多的事件觸發。目前打算支持的事件包括
- 定時觸發: 目前已經有的觸發方式
- 消息隊列觸發:通過消息監聽消息隊列的方式觸發工作流
- HTTP、TCP、SMTP 觸發:通過監聽HTTP、TCP、SMTP特定事件觸發工作流
詳情請看鏈接: https://github.com/apache/dolphinscheduler/issues/15330
審計日誌增強
Apache Dolphinscheduler 會在 2024 年增加更多的審計日誌相關的功能,保證將用戶對資源的操作能記錄下來,這裡的資源包括項目、工作流、任務、資源中心文件、udf、數據源等在 dolphinscheduler 中會被創建、修改、刪除、更新的資源。
我們目前打算通過 AOP 的方式實現這個功能,實現了審計日誌後,用戶可以更好的查看資源創建情況,當出現意外情況時及時通過審計日誌發現歷史操作。
目前有一個 PR 初步實現了這個功能,詳情請看鏈接: https://github.com/apache/dolphinscheduler/issues/15423
隨著這份路線圖的實施,Apache DolphinScheduler社區將持續優化和擴展我們的調度系統,為用戶提供更加強大、靈活和高效的解決方案。
我們相信,通過社區成員的共同努力和用戶的積極反饋,Apache DolphinScheduler將繼續領跑開源調度和工作流管理領域,為企業和開發者帶來更多的價值和可能性。讓我們攜手併進,共同見證Apache DolphinScheduler的蓬勃發展和創新旅程。
本文由 白鯨開源 提供發佈支持!