DolphinScheduler 3.3.0版本更新一覽

海豚调度發表於2024-05-23

Apache DolphinScheduler即將迎來3.3.0版本的釋出,屆時將有一系列重要的更新和改進。在近期的社群5月份使用者線上分享會上,專案PMC 阮文俊為大家介紹了3.3.0版本將帶來的主要更新和改進,併為大家指出瞭如何參與社群的方式。

什麼是DolphinScheduler?

DolphinScheduler是一個開源的專案,主要用來進行工作流編排、執行和管理。
它有四個重要的特點:

  • 工作流是基本單位,所有的功能設計都是圍繞工作流
  • 這是一個低程式碼平臺,可以不用程式碼,或用少量的程式碼來完成工作流相關的工作
  • 不用資料遷移即可進行伺服器節點的擴縮容
  • 採用外掛化架構

工作流是基本單位

  • 工作流可以包含任務和子工作流,每個任務都需要屬於一個工作流。
  • 工作流可以依賴其他工作流,工作流是最小的執行單元。
  • 工作流的執行支援手動或自動觸發。

file

無/低程式碼操作

  • 可以在UI門戶,透過頁面托拉拽的互動方式完成工作流的定義和管控操作;
  • 也可以透過OpenAPI或PyDolphinScheduler來完成對工作流的相關操作。

file
file

無需資料遷移進行擴縮容

  • 後設資料儲存在共享的關聯式資料庫中,無需資料遷移即可擴充套件系統。
  • 服務上線時自動註冊到叢集,服務下線時,執行中的任務自動轉移,無需人工介入。

file

file

外掛化架構

  • 工作流引擎之外的元件以外掛形式實現。
  • 報警外掛:Email、Http、微信、Slack等
  • 任務外掛:Shell, SQL, Spark, K8s等
  • 資料來源外掛:Mysql, PG, Oracle等
  • 支援Zookeeper、JDBC、ETCD作為註冊中心
  • 支援HDFS、S3、OSS等儲存系統

接下來看一下3.3.0版本中有哪些新的變化。

3.3.0版本更新一覽

架構更新

3.3.0版本在整體架構和部署方式上沒有太大的變化,依然是三個核心服務:API主要用來做一些源資料的管理和授權方面的事情,Master主要是用來做工作流的編排和執行,Worker主要用來做任務的執行和管控。大部份核心元件透過外掛的方式被載入。

file

新版中的一些重大變化包括:

新的任務外掛介面

之前的版本在任務外掛定義上有著如下問題:

  • 任務外掛中的方法與生命週期不匹配,在任務外掛定義上沒有暴露生命週期的方法,導致任務外掛實現時會缺失,暫停、容錯等控制方法。。
  • 目前的任務外掛介面過於複雜,任務外掛介面包含很多子外掛的方法,導致任務外掛介面越來越膨脹。

3.3.0版本將引入新的任務外掛定義介面(V2版本)來管理任務外掛例項的生命週期。任務外掛例項的生命週期管理包括執行、暫停、殺死、容錯、成功和失敗狀態。

新的任務外掛介面會更加清晰明瞭:

file

  • 增加ITaskApplicationContext:表示任務外掛例項執行的上下文資訊,例如 processId、applicationId
  • 增加ITaskListenerManager:可以註冊用於偵聽任務外掛例項的資訊更改,便於對任務執行流程進行擴充套件

容錯改進

  • Master容錯:
    • 對下線的Master節點持有的工作流程進行容錯
    • 插入工作流容錯命令
    • 工作流容錯將從Worker伺服器接管正在執行的任務
  • Worker容錯:
    • 處理下線的Worker節點執行的任務
    • 把容錯任務分發給新的Worker節點
    • 不同的任務外掛的容錯行為可能會不同
    • 支援精確一次(exactly-once)、至少一次(at-least-once)、至多一次(at-most-once)的容錯行為

file

引數優先順序統一

此前,DolphinScheduler中有多重引數型別,包括啟動引數、工作流定義引數、任務定義引數、租戶引數等,但存在的問題是這些引數沒有統一的優先順序,有些引數在執行時無法更改。
在3.3.0版本中,我們對引數優先順序進行了最佳化:

  • 統一了引數優先順序,遵循就近原則,如啟動引數 > 任務定義引數 > 工作流定義引數。
  • 啟動引數優先順序最高,其他引數可被啟動引數覆蓋,解決了引數優先順序不一致以及某些引數無法在執行時更改的問題。

工作流觸發解耦

目前,DolphinScheduler中所有工作流觸發都透過命令表示。目前的方式存在以下弊端:

  • 只能在資料庫中插入觸發命令,trigger與資料庫嚴格繫結
  • 沒有觸發命令的schema,難以擴充套件新的觸發

新版本對工作流觸發進行了解耦,並可以透過訊息中介軟體來進行工作流觸發:

  • 提供了標準的Trigger schema,方便擴充套件trigger
  • 引入CommandEngine元件來探測待處理的命令
  • 命令的repository不再僅限於關係型資料庫,支援從流式系統(如Kafka)中消費命令

file

事件執行緒模型改進

當前,DolphinScheduler Master中存在兩個事件執行緒池,分別處理工作流事件和任務狀態變更事件。這樣的模型導致執行中很難協調這兩個執行緒池,而且事件的順序可能會丟失,並且使用者也很難去設定這兩個執行緒池的大小。

file

為了改變這一點,3.3.0中做了以下最佳化:

  • 合併兩個事件執行緒池,一個工作流中的所有事件按FIFO順序在事件佇列中處理
  • 提供了更多的事件指標和事件查詢介面,便於監控和管理工作流事件

file

支援接入多個Hadoop/S3叢集

3.3.0之前版本中,噹噹資源中心配置HDFS/S3,配置第三方系統任務時只能透過配置檔案去進行配置,這就導致在執行時不能新增Hadoop叢集或S3叢集。而且配置檔案過大。
新版本中這一塊有了變化:

  • 允許在後設資料儲存中進行配置
  • 支援多個叢集
  • 支援在執行時新增新叢集
  • 不同任務可以使用不同的叢集

file
file

AlertServer改進

AlertServer透過HA實現了高可用,使用單執行緒傳送警報。這就導致需要使用額外的機器來部署AlertServer。
新版本中,允許使用者將AlertServer嵌入API伺服器,並採用多執行緒模型傳送警報,提高了效率。

file

以上為Apache DolphinScheduler 3.3.0版本將帶來的新功能與最佳化項參考,具體更新內容請關注官網和GitHub釋出訊息。

如何參與社群

  • 郵件:是討論問題的首選方式,包括使用者和開發者郵件列表,用來討論使用問題、設計方案、新的想法等,以及新版本釋出投票。
    • 使用者組郵件:users@dolphinscheduler.apache.org
    • 開發者郵件:dev@dolphinscheduler.apache.org
  • GitHub:是參與專案最簡單的方式,包括DolphinScheduler的多個GitHub倉庫
    • 透過DSIP引入新功能是惟一的渠道
    • 提bug和修bug同樣重要
    • PR越簡單越好
    • https://github.com/apache/dolphinscheduler
    • https://github.com/apache/dolphinscheduler-website
    • https://github.com/apache/dolphinscheduler-operator
    • https://github.com/apache/dolphinscheduler-sdk-python
    • https://github.com/apache/dolphinscheduler
    • 注意事項:
      • 透過DSIP引入新功能是唯一的渠道
      • 彙報bug和修bug同樣重要
      • PR越簡單越好

結語

Apache DolphinScheduler 3.3.0版本帶來了多項重要更新,增強了系統的穩定性、擴充套件性和易用性。我們鼓勵社群成員積極參與,共同推動專案的發展。

嘉賓簡介

  • 姓名:阮文俊
  • Title:Apache DolphinScheduler/SeaTunnel/EventMesh PMC 成員
  • GitHub:ruanwenjun
  • 就職經歷:白鯨開源/eBay/拼多多
  • 專業領域:專注於分散式系統和微服務中介軟體

本文由 白鯨開源 提供釋出支援!

相關文章