千呼萬喚中,WorkflowAsCode 功能終於在 2.0.2 版本中如約上線,為有動態、批次建立和更新工作流需求的使用者帶來福音。
此外,新版本還新增企業微信告警群聊對談訊息推播,簡化了後設資料初始化流程,並修復了舊版本中強制終止後服務重新啟動失敗,新增 Hive 資料來源失敗等問題。
01 新功能
1 WorkflowAsCode
首先在新功能上,2.0.2 版本重磅釋出了 PythonGatewayServer, 這是一個 Workflow-as-code 的伺服器端,與 apiServer 等服務的啟動方式相同。
啟用 PythonGatewayServer 後,所有 Python API 的請求都會傳送到 PythonGatewayServer。Workflow-as-code 讓使用者可以通過 Python API 建立工作流,對於有動態、批次地建立和更新工作流的使用者來說是一個好訊息。通過 Workflow-as-code 建立的工作流與其他工作流一樣,都可以在 web UI 檢視。
以下為一個 Workflow-as-code 測試用例:
# 定義工作流屬性,包括名稱、排程週期、開始時間、使用租戶等資訊
with ProcessDefinition(
name="tutorial",
schedule="0 0 0 * * ? *",
start_time="2021-01-01",
tenant="tenant_exists",
) as pd:
# 定義4個任務,4個都是 shell 任務,shell 任務的必填引數為任務名、命令資訊,這裡都是 echo 的 shell 命令
task_parent = Shell(name="task_parent", command="echo hello pydolphinscheduler")
task_child_one = Shell(name="task_child_one", command="echo 'child one'")
task_child_two = Shell(name="task_child_two", command="echo 'child two'")
task_union = Shell(name="task_union", command="echo union")
# 定義任務間依賴關係
# 這裡將 task_child_one,task_child_two 先宣告成一個任務組,通過 python 的 list 宣告
task_group = [task_child_one, task_child_two]
# 使用 set_downstream 方法將任務組 task_group 宣告成 task_parent 的下游,如果想要宣告上游則使用 set_upstream
task_parent.set_downstream(task_group)
# 使用位元運算符 << 將任務 task_union 宣告成 task_group 的下游,同時支援通過位元運算符 >> 宣告
task_union << task_group
上面的程式碼執行後,可以在 web UI 看到的工作流如下:
--> task_child_one
/ \
task_parent --> --> task_union
\ /
--> task_child_two
2 企業微信告警方式支援群聊訊息推播
在此前版本中,微信告警方式僅支援訊息通知方式;在 2.0.2 版本中,使用者在使用企業微信的告警時,支援進行應用內以群聊對談訊息推播的方式推播給使用者。
02 優化
1 簡化後設資料初始化流程
首次安裝 Apache DolphinScheduler 時,執行 create-dolphinscheduler.sh 需要從最早的版本逐步升級到當前版本。為了更方便快捷地初始化後設資料流程,2.0.2 版本讓使用者可以直接安裝當前版本的資料庫指令碼,提升安裝速度。
2 刪除補數日期中的「+1」(天)
刪除了補數日期中的「+1」天,以避免補數時 UI 日期總顯示 +1 給使用者造成的困惑。
03 Bug 修復
[#7661] 修復 logger 在 worker 中的記憶體漏失
[#7750 ]相容歷史版本資料來源連線資訊
[#7705] 記憶體限制導致從 1.3.5 升級到 2.0.2 出現錯誤
[#7786] 強制終止後服務重新啟動失敗
[#7660] 流程定義版本建立時間錯誤
[#7607] 執行 PROCEDURE 節點失敗
[#7639] 在通用設定項中新增 quartz 和 zookeeper 預設設定
[#7654] 在依賴節點中,出現不屬於當前專案的選項時報錯
[#7658] 工作流複製錯誤
[#7609] worker sendResult 成功但 master 未收到錯誤時,工作流始終在執行
[#7554] Standalone Server 中的 H2 會在數分鐘後自動重新啟動,導致資料異常丟失
[#7434] 執行 MySQL 建表語句報錯
[#7537] 依賴節點重試延遲不起作用
[#7392] 新增 Hive 資料來源失敗
下載:https://dolphinscheduler.apache.org/zh-cn/download/download.html
Release Note:https://github.com/apache/dolphinscheduler/releases/tag/2.0.2
04 致謝
一如既往地,感謝所有為 2.0.2版本建言獻策並付諸行動的 Contributor(排名不分先後),是你們的智慧和付出讓 Apache DolphinScheduler 更加符合使用者的使用需求。
05 參與貢獻
隨著國內開源的迅猛崛起,Apache DolphinScheduler 社群迎來蓬勃發展,為了做更好用、易用的排程,真誠歡迎熱愛開源的夥伴加入到開源社群中來,為中國開源崛起獻上一份自己的力量,讓本土開源走向全球。
參與 DolphinScheduler 社群有非常多的參與貢獻的方式,包括:
貢獻第一個PR(檔案、程式碼) 我們也希望是簡單的,第一個PR用於熟悉提交的流程和社群共同作業以及感受社群的友好度。
社群彙總了以下適合新手的問題列表:https://github.com/apache/dolphinscheduler/issues/5689
非新手問題列表:https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22
如何參與貢獻連結:https://dolphinscheduler.apache.org/zh-cn/community/development/contribute.html
來吧,DolphinScheduler開源社群需要您的參與,為中國開源崛起添磚加瓦吧,哪怕只是小小的一塊瓦,匯聚起來的力量也是巨大的。
參與開源可以近距離與各路高手切磋,迅速提升自己的技能,如果您想參與貢獻,我們有個貢獻者種子孵化群,可以新增社群小助手微信(Leonard-ds) 手把手教會您( 貢獻者不分水平高低,有問必答,關鍵是有一顆願意貢獻的心 )。新增小助手微信時請說明想參與貢獻。
社群官網https://dolphinscheduler.apache.org/
程式碼倉地址https://github.com/apache/dolphinscheduler
您的 Star,是 Apache DolphinScheduler 為愛發電的動力❤️ ~
投稿請新增社群小助手微信
(Leonard-ds)