2024年Apache DolphinScheduler RoadMap:引領開源調度系統的未來

非常歡迎大家來到Apache DolphinScheduler社區!隨着開源技術在全球範圍內的快速發展,社區的貢獻者 “同仁” 一直致力於構建一個強大而活躍的開源調度系統社區,爲用戶提供高效、可靠的任務調度和工作流管理解決方案。

file

在過去的一段時間裏,我們取得了一些重要的成就,但我們的願景遠未實現。爲了更好地滿足用戶需求和推動項目的發展,我們在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

file

任務插件增強

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特定事件觸發工作流

file

詳情請看鏈接: 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的蓬勃發展和創新旅程。

 

本文由 白鯨開源科技 提供發佈支持!

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