
DolphinScheduler 2.0.1 實(shí)現(xiàn)一鍵升級(jí)、插件化等功能
聲明:該文章來自(DolphinScheduler)版權(quán)由原作者所有,K2OS渲染引擎提供網(wǎng)頁加速服務(wù)。
2.0.1 版本通過優(yōu)化內(nèi)核增強(qiáng)了系統(tǒng)處理能力,從而在性能上得到較大提升,全新的 UI 界面也極大地提升了用戶體驗(yàn)。更重要的是,2.0.1 版本還有兩個(gè)重大變化:插件化和重構(gòu)。
1 插件化
此前,有不少用戶反饋希望 Apache DolphinScheduler 可以優(yōu)化插件化,為響應(yīng)用戶需求,Apache DolphinScheduler 2.0.1 在插件化上更進(jìn)了一步,新增了告警插件、注冊(cè)中心插件和任務(wù)插件管理功能。利用插件化,用戶可以更加靈活地實(shí)現(xiàn)自己的功能需求,更加簡單地根據(jù)接口自定義開發(fā)任務(wù)組件,也可以無縫遷移用戶的任務(wù)組件至 DolphinScheduler 更高版本中。
DolphinScheduler 正在處于微內(nèi)核 + 插件化的架構(gòu)改進(jìn)之中,所有核心能力如任務(wù)、告警組件、數(shù)據(jù)源、資源存儲(chǔ)、注冊(cè)中心等都將被設(shè)計(jì)為擴(kuò)展點(diǎn),我們希望通過 SPI 來提高 Apache DolphinScheduler 本身的靈活性和友好性。
相關(guān)代碼可以參考 dolphinscheduler-spi 模塊,相關(guān)插件的擴(kuò)展接口也皆在該模塊下。用戶需要實(shí)現(xiàn)相關(guān)功能插件化時(shí),建議先閱讀此模塊代碼。當(dāng)然,也建議大家閱讀文檔以節(jié)省時(shí)間。
我們采用了一款優(yōu)秀的前端組件 form-create,它支持基于 json 生成前端 UI 組件,如果插件開發(fā)涉及到前端,我們會(huì)通過 json 來生成相關(guān)前端 UI 組件。
org.apache.dolphinscheduler.spi.params 里對(duì)插件的參數(shù)做了封裝,它會(huì)將相關(guān)參數(shù)全部轉(zhuǎn)化為對(duì)應(yīng)的 json。這意味著,你完全可以通過 Java 代碼的方式完成前端組件的繪制(這里主要是表單)。1
告警插件
以告警插件為例,我們實(shí)現(xiàn)了在 alert-server 啟動(dòng)時(shí)加載相關(guān)插件。alert 提供了多種插件配置方法,目前已經(jīng)內(nèi)置了 Email、DingTalk、EnterpriseWeChat、Script 等告警插件。當(dāng)插件模塊開發(fā)工作完成后,通過簡單的配置即可啟用。2
多注冊(cè)中心組件
在 Apache DolphinScheduler 1.X 中,Zookeeper 組件有著非常重要的意義,包括 master/worker 服務(wù)的監(jiān)控發(fā)現(xiàn)、失聯(lián)告警、通知容錯(cuò)等功能。在 2.0.1 版本中,我們?cè)谧?cè)中心逐漸“去 ZK 化”,弱化了 Zookeeper 的作用,新增了插件管理功能。
在插件管理中,用戶可以增加 ETCD 等注冊(cè)中心的支持,使得 Apache Dolphinscheduler 的靈活性更高,能適應(yīng)更復(fù)雜的用戶需求。
3
任務(wù)組件插件
新版本還新增了任務(wù)插件功能,增強(qiáng)了不同的任務(wù)組件的隔離功能。用戶開發(fā)自定義插件時(shí),只需要實(shí)現(xiàn)插件的接口即可。主要包含創(chuàng)建任務(wù)(任務(wù)初始化、任務(wù)運(yùn)行等方法)和任務(wù)取消。
如果是 Yarn 任務(wù),則需要實(shí)現(xiàn) AbstractYarnTask。目前,任務(wù)插件的前端需要開發(fā)者自己使用 Vue 開發(fā)部署,在后續(xù)版本中,我們將實(shí)現(xiàn)由 Java 代碼的方式完成前端組件的自動(dòng)繪制。
2 重構(gòu)
迄今為止,Apache DolphinScheduler 已經(jīng)重構(gòu)了約 70% 的代碼,實(shí)現(xiàn)了全面的升級(jí)。
Master 內(nèi)核優(yōu)化
2.0.1 版本升級(jí)包括重構(gòu)了 Master 的執(zhí)行流程,將之前狀態(tài)輪詢監(jiān)控改為事件通知機(jī)制,大幅減輕了數(shù)據(jù)庫的輪詢壓力;去掉全局鎖,增加了 Master 的分片處理機(jī)制,將順序讀寫命令改為并行處理,增強(qiáng)了 Master 橫向擴(kuò)展能力;優(yōu)化工作流處理流程,減少了線程池的使用,大幅提升單個(gè) Master 處理的工作流數(shù)量;增加緩存機(jī)制,優(yōu)化數(shù)據(jù)庫連接方式,以及簡化處理流程,減少處理過程中不必要的耗時(shí)操作等。
工作流和任務(wù)解耦
在 Apache DolphinScheduler 1.x 版本中,任務(wù)及任務(wù)關(guān)系保存是以大 json 的方式保存到工作流定義表中的,如果某個(gè)工作流很大,比如達(dá)到 100 至 1000 個(gè)任務(wù)規(guī)模,這個(gè) json 字段會(huì)非常大,在使用時(shí)需要解析 json。這個(gè)過程比較耗費(fèi)性能,且任務(wù)無法重用;另一方面,基于大 json,在工作流版本及任務(wù)版本上也沒有很好的實(shí)現(xiàn)方案。
因此,在新版本中,我們針對(duì)工作流和任務(wù)做了解耦,新增了任務(wù)和工作流的關(guān)系表,并新增了日志表,用來保存工作流定義和任務(wù)定義的歷史版本,大幅提高工作流運(yùn)行的效率。
下圖為 API 模塊下工作流和任務(wù)的操作流程圖:
3 版本自動(dòng)升級(jí)功能
2.0.1 增加了版本自動(dòng)升級(jí)功能,用戶可以從 1.x 版本自動(dòng)升級(jí)到 2.0.1 版本。只需要運(yùn)行一個(gè)使用腳本,即可無感知地使用新版本運(yùn)行以前的工作流:
具體升級(jí)文檔請(qǐng)參考:https://dolphinscheduler.apache.org/zh-cn/docs/latest/user_doc/upgrade.html
另外,Apache DolphinScheduler 將來的版本均可實(shí)現(xiàn)自動(dòng)升級(jí),省去手動(dòng)升級(jí)的麻煩。04
4 新功能列表
Apache DolphinScheduler 2.0.1 新增功能詳情如下:
新增 Standalone 服務(wù)
或者使用 Docker 一鍵部署所有的服務(wù):https://dolphinscheduler.apache.org/zh-cn/docs/latest/user_doc/guide/installation/docker.html
任務(wù)參數(shù)傳遞功能
目前支持 shell 任務(wù)和 sql 任務(wù)之間的傳遞。
SQL 任務(wù)的參數(shù)傳遞:
新增 switch 任務(wù)和 pigeon 任務(wù)組件:
在 switch 任務(wù)中設(shè)置判斷條件,可以實(shí)現(xiàn)根據(jù)不同的條件判斷結(jié)果運(yùn)行不同的條件分支的效果。例如:有三個(gè)任務(wù),其依賴關(guān)系是 A -> B -> [C, D] ,其中 task_a是 shell 任務(wù),task_b 是 switch 任務(wù)。
pigeon 任務(wù),是一個(gè)可以和第三方系統(tǒng)對(duì)接的一種任務(wù)組件,可以實(shí)現(xiàn)觸發(fā)任務(wù)執(zhí)行、取消任務(wù)執(zhí)行、獲取任務(wù)狀態(tài),以及獲取任務(wù)日志等功能。pigeon 任務(wù)需要在配置文件中配置上述任務(wù)操作的 API 地址,以及對(duì)應(yīng)的接口參數(shù)。在任務(wù)組件里輸入一個(gè)目標(biāo)任務(wù)名稱,即可對(duì)接第三方系統(tǒng),實(shí)現(xiàn)在 Apache DolphinScheduler 中操作第三方系統(tǒng)的任務(wù)。
新增環(huán)境管理功能
5 優(yōu)化項(xiàng)
優(yōu)化 RestApi
我們更新了新的 RestApi 規(guī)范,并且按照規(guī)范,重新優(yōu)化了 API 部分,使得用戶在使用 API 時(shí)更加簡單。
優(yōu)化工作流版本管理
優(yōu)化了工作流版本管理功能,增加了工作流和任務(wù)的歷史版本。
優(yōu)化 worker 分組管理功能
在 2.0 版本中,我們新增了 worker 分組管理功能,用戶可以通過頁面配置來修改 worker 所屬的分組信息,無需到服務(wù)器上修改配置文件并重啟 worker,使用更加便捷。
打開要設(shè)置分組的 worker 節(jié)點(diǎn)上的"conf/worker.properties"配置文件,修改 worker.groups 參數(shù)。
可以在運(yùn)行中修改 worker 所屬的 worker 分組,如果修改成功,worker 就會(huì)使用這個(gè)新建的分組,忽略 worker.properties 中的配置。修改步驟為"安全中心 -> worker 分組管理 -> 點(diǎn)擊 '新建 worker 分組' -> 輸入'組名稱' -> 選擇已有 worker -> 點(diǎn)擊'提交'"
其他優(yōu)化事項(xiàng):
增加了啟動(dòng)工作流的時(shí)候,可以修改啟動(dòng)參數(shù);
新增了保存工作流時(shí),自動(dòng)上線工作流狀態(tài);
優(yōu)化了 API 返回結(jié)果,加快了創(chuàng)建工作流時(shí)頁面的加載速度;
加快工作流實(shí)例頁面的加載速度;
優(yōu)化工作流關(guān)系頁面的顯示信息;
優(yōu)化了導(dǎo)入導(dǎo)出功能,支持跨系統(tǒng)導(dǎo)入導(dǎo)出工作流;
優(yōu)化了一些 API 的操作,如增加了若干接口方法,增加任務(wù)刪除檢查等。cvdc 0
6 變更日志
另外Apache DolphinScheduler 2.0.1 也修復(fù)了一些 bug,主要包括:
修復(fù)了 netty 客戶端會(huì)創(chuàng)建多個(gè)管道的問題;
修復(fù)了導(dǎo)入工作流定義錯(cuò)誤的問題;
修復(fù)了任務(wù)編碼會(huì)重復(fù)獲取的問題;
修復(fù)使用?Kerberos?時(shí),Hive 數(shù)據(jù)源連接失敗的問題;
修復(fù) Standalone 服務(wù)啟動(dòng)失敗問題;
修復(fù)告警組顯示故障的問題;
修復(fù)文件上傳異常的問題;
修復(fù) Switch 任務(wù)運(yùn)行失敗的問題;
修復(fù)工作流超時(shí)策略失效的問題;
修復(fù) sql 任務(wù)不能發(fā)送郵件的問題。
7 致謝
感謝 289 位參與 2.0.1 版本優(yōu)化和改進(jìn)的社區(qū)貢獻(xiàn)者(排名不分先后)!
Apache DolphinScheduler 2.0.1?
下載地址:https://dolphinscheduler.apache.org/zh-cn/download/download.html
[超站]友情鏈接:
四季很好,只要有你,文娛排行榜:https://www.yaopaiming.com/
關(guān)注數(shù)據(jù)與安全,洞悉企業(yè)級(jí)服務(wù)市場:https://www.ijiandao.com/
- 1 “開創(chuàng)新疆更加美好的明天” 7904780
- 2 小孩姐扛著“東風(fēng)-5C”走進(jìn)幼兒園 7808484
- 3 舞者解曉東去世 曾摔傷腦部重度昏迷 7713154
- 4 國慶中秋假期各地天氣最新預(yù)報(bào) 7617076
- 5 特斯拉技術(shù)員被機(jī)器人打成重傷 7520736
- 6 兩名15歲失聯(lián)少女已被越南警方攔截 7424276
- 7 黃仁勛稱中國芯片僅落后美國幾納秒 7333410
- 8 媽媽因兒子成績“三連跌”怒退機(jī)票 7235569
- 9 中方?jīng)Q定:增設(shè)K字簽證 7142558
- 10 清華兩教職工當(dāng)“黃?!北痪?/a> 7045330