
DolphinScheduler 2.0.1 實(shí)現(xiàn)一鍵升級、插件化等功能
2.0.1 版本通過優(yōu)化內(nèi)核增強(qiáng)了系統(tǒng)處理能力,從而在性能上得到較大提升,全新的 UI 界面也極大地提升了用戶體驗(yàn)。更重要的是,2.0.1 版本還有兩個重大變化:插件化和重構(gòu)。
1 插件化
此前,有不少用戶反饋希望 Apache DolphinScheduler 可以優(yōu)化插件化,為響應(yīng)用戶需求,Apache DolphinScheduler 2.0.1 在插件化上更進(jìn)了一步,新增了告警插件、注冊中心插件和任務(wù)插件管理功能。利用插件化,用戶可以更加靈活地實(shí)現(xiàn)自己的功能需求,更加簡單地根據(jù)接口自定義開發(fā)任務(wù)組件,也可以無縫遷移用戶的任務(wù)組件至 DolphinScheduler 更高版本中。
DolphinScheduler 正在處于微內(nèi)核 + 插件化的架構(gòu)改進(jìn)之中,所有核心能力如任務(wù)、告警組件、數(shù)據(jù)源、資源存儲、注冊中心等都將被設(shè)計為擴(kuò)展點(diǎn),我們希望通過 SPI 來提高 Apache DolphinScheduler 本身的靈活性和友好性。
相關(guān)代碼可以參考 dolphinscheduler-spi 模塊,相關(guān)插件的擴(kuò)展接口也皆在該模塊下。用戶需要實(shí)現(xiàn)相關(guān)功能插件化時,建議先閱讀此模塊代碼。當(dāng)然,也建議大家閱讀文檔以節(jié)省時間。
我們采用了一款優(yōu)秀的前端組件 form-create,它支持基于 json 生成前端 UI 組件,如果插件開發(fā)涉及到前端,我們會通過 json 來生成相關(guān)前端 UI 組件。
org.apache.dolphinscheduler.spi.params 里對插件的參數(shù)做了封裝,它會將相關(guān)參數(shù)全部轉(zhuǎn)化為對應(yīng)的 json。這意味著,你完全可以通過 Java 代碼的方式完成前端組件的繪制(這里主要是表單)。1
告警插件
以告警插件為例,我們實(shí)現(xiàn)了在 alert-server 啟動時加載相關(guān)插件。alert 提供了多種插件配置方法,目前已經(jīng)內(nèi)置了 Email、DingTalk、EnterpriseWeChat、Script 等告警插件。當(dāng)插件模塊開發(fā)工作完成后,通過簡單的配置即可啟用。2
多注冊中心組件
在 Apache DolphinScheduler 1.X 中,Zookeeper 組件有著非常重要的意義,包括 master/worker 服務(wù)的監(jiān)控發(fā)現(xiàn)、失聯(lián)告警、通知容錯等功能。在 2.0.1 版本中,我們在注冊中心逐漸“去 ZK 化”,弱化了 Zookeeper 的作用,新增了插件管理功能。
在插件管理中,用戶可以增加 ETCD 等注冊中心的支持,使得 Apache Dolphinscheduler 的靈活性更高,能適應(yīng)更復(fù)雜的用戶需求。
3
任務(wù)組件插件
新版本還新增了任務(wù)插件功能,增強(qiáng)了不同的任務(wù)組件的隔離功能。用戶開發(fā)自定義插件時,只需要實(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 代碼的方式完成前端組件的自動繪制。
2 重構(gòu)
迄今為止,Apache DolphinScheduler 已經(jīng)重構(gòu)了約 70% 的代碼,實(shí)現(xiàn)了全面的升級。
Master 內(nèi)核優(yōu)化
2.0.1 版本升級包括重構(gòu)了 Master 的執(zhí)行流程,將之前狀態(tài)輪詢監(jiān)控改為事件通知機(jī)制,大幅減輕了數(shù)據(jù)庫的輪詢壓力;去掉全局鎖,增加了 Master 的分片處理機(jī)制,將順序讀寫命令改為并行處理,增強(qiáng)了 Master 橫向擴(kuò)展能力;優(yōu)化工作流處理流程,減少了線程池的使用,大幅提升單個 Master 處理的工作流數(shù)量;增加緩存機(jī)制,優(yōu)化數(shù)據(jù)庫連接方式,以及簡化處理流程,減少處理過程中不必要的耗時操作等。
工作流和任務(wù)解耦
在 Apache DolphinScheduler 1.x 版本中,任務(wù)及任務(wù)關(guān)系保存是以大 json 的方式保存到工作流定義表中的,如果某個工作流很大,比如達(dá)到 100 至 1000 個任務(wù)規(guī)模,這個 json 字段會非常大,在使用時需要解析 json。這個過程比較耗費(fèi)性能,且任務(wù)無法重用;另一方面,基于大 json,在工作流版本及任務(wù)版本上也沒有很好的實(shí)現(xiàn)方案。
因此,在新版本中,我們針對工作流和任務(wù)做了解耦,新增了任務(wù)和工作流的關(guān)系表,并新增了日志表,用來保存工作流定義和任務(wù)定義的歷史版本,大幅提高工作流運(yùn)行的效率。
下圖為 API 模塊下工作流和任務(wù)的操作流程圖:
3 版本自動升級功能
2.0.1 增加了版本自動升級功能,用戶可以從 1.x 版本自動升級到 2.0.1 版本。只需要運(yùn)行一個使用腳本,即可無感知地使用新版本運(yùn)行以前的工作流:
具體升級文檔請參考:https://dolphinscheduler.apache.org/zh-cn/docs/latest/user_doc/upgrade.html
另外,Apache DolphinScheduler 將來的版本均可實(shí)現(xiàn)自動升級,省去手動升級的麻煩。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)行不同的條件分支的效果。例如:有三個任務(wù),其依賴關(guān)系是 A -> B -> [C, D] ,其中 task_a是 shell 任務(wù),task_b 是 switch 任務(wù)。
pigeon 任務(wù),是一個可以和第三方系統(tǒng)對接的一種任務(wù)組件,可以實(shí)現(xiàn)觸發(fā)任務(wù)執(zhí)行、取消任務(wù)執(zhí)行、獲取任務(wù)狀態(tài),以及獲取任務(wù)日志等功能。pigeon 任務(wù)需要在配置文件中配置上述任務(wù)操作的 API 地址,以及對應(yīng)的接口參數(shù)。在任務(wù)組件里輸入一個目標(biāo)任務(wù)名稱,即可對接第三方系統(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 時更加簡單。
優(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 就會使用這個新建的分組,忽略 worker.properties 中的配置。修改步驟為"安全中心 -> worker 分組管理 -> 點(diǎn)擊 '新建 worker 分組' -> 輸入'組名稱' -> 選擇已有 worker -> 點(diǎn)擊'提交'"
其他優(yōu)化事項(xiàng):
增加了啟動工作流的時候,可以修改啟動參數(shù);
新增了保存工作流時,自動上線工作流狀態(tài);
優(yōu)化了 API 返回結(jié)果,加快了創(chuàng)建工作流時頁面的加載速度;
加快工作流實(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 客戶端會創(chuàng)建多個管道的問題;
修復(fù)了導(dǎo)入工作流定義錯誤的問題;
修復(fù)了任務(wù)編碼會重復(fù)獲取的問題;
修復(fù)使用?Kerberos?時,Hive 數(shù)據(jù)源連接失敗的問題;
修復(fù) Standalone 服務(wù)啟動失敗問題;
修復(fù)告警組顯示故障的問題;
修復(fù)文件上傳異常的問題;
修復(fù) Switch 任務(wù)運(yùn)行失敗的問題;
修復(fù)工作流超時策略失效的問題;
修復(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è)級服務(wù)市場:https://www.ijiandao.com/

隨時掌握互聯(lián)網(wǎng)精彩
- 1 像石榴籽一樣緊緊抱在一起 7904256
- 2 殲-35完成在福建艦上彈射起飛 7809675
- 3 深圳:建議準(zhǔn)備至少3天的應(yīng)急物資 7713223
- 4 唱著民歌迎豐收 7619347
- 5 日本“蘋果病”流行達(dá)歷史頂點(diǎn) 7521128
- 6 孩子的數(shù)學(xué)邏輯比運(yùn)算結(jié)果重要 7424556
- 7 背簍老人等公交被拒載 司機(jī)被開除 7327798
- 8 榴蓮降至15元一斤 7237089
- 9 美團(tuán)回應(yīng)外賣功能癱瘓 7136268
- 10 港珠澳大橋主橋?qū)⒎忾] 7041429