中電信翼康基於Apache Dolphinscheduler重構“星海·濟世醫療數據中台”實踐經驗分享

来源:https://www.cnblogs.com/DolphinScheduler/p/18422339
-Advertisement-
Play Games

文章作者:尚志忠 編輯整理:曾輝 行業背景 隨著大數據、雲計算、5G、人工智慧等技術的快速發展,以及醫療信息化建設的不斷深入,數據中台作為打通醫療數據融合壁壘、實現數據互通與共用、構建高效數據應用的關鍵信息平臺,正逐漸成為推動醫療行業數字化轉型和創新發展的重要力量。 星海·濟世醫療數據中台介紹 中國 ...


文章作者:尚志忠

編輯整理:曾輝

行業背景

隨著大數據、雲計算、5G、人工智慧等技術的快速發展,以及醫療信息化建設的不斷深入,數據中台作為打通醫療數據融合壁壘、實現數據互通與共用、構建高效數據應用的關鍵信息平臺,正逐漸成為推動醫療行業數字化轉型和創新發展的重要力量。

星海·濟世醫療數據中台介紹

中國電信依托多年行業積累,定製打造醫療行業數據中台,以夯實衛生健康信息化新基建能力為目標,賦能行業客戶,深化數據集成治理與開發應用能力,推進健康醫療大數據應用發展,充分釋放數據價值。

星海·濟世醫療數據中台以“湖倉一體、流批一體”技術為核心,圍繞健康醫療數據在集成、存儲、治理、建模、分析、挖掘、服務、應用、流通等各個環節的需求,構建數據全生命周期管理的能力平臺。

關於數據處理中任務調度的思考

在醫療行業的數據處理過程中,存在著以下常見的問題:

  • 複雜的數據處理邏輯與流程未能實現統一的管理和調度,數據處理流程長,依賴關係錯綜複雜,不易於維護和使用,同時影響工作效率,間接提高了使用數據的成本。

  • 傳統的調度工具支持的組件有限,不能滿足在醫療行業中多場景多種異構數據源的數據處理和使用,且各種數據處理邏輯和關係不能夠可視化管理,只依賴腳本和定時任務不足以支撐目前的業務發展,不能可視化的反應任務之間的依賴關係,增加了業務處理的複雜性。

  • 多系統之間的定時任務缺乏統一的調度機制,這些任務可能由不同系統的不同團隊開發和維護,導致資源浪費和運維成本上升。缺乏統一的調度平臺,使得運維人員需要手動監控和管理這些任務。

基於任務調度和管理相關的以上問題,我們認為一個平臺級的產品必要要有一款優秀的調度工具,不僅要具備基於時序的主動觸發能力和基於事件的被動觸發能力,同時要能夠支持豐富的組件方便數據處理任務的開發,還需要具備運行時監控能力和分散式的架構下資源調度及均衡能力。

產品架構圖

經過不斷的學習和探索使用發現Apache DolphinScheduler 調度器在處理以上問題的過程中,有明顯的優勢。

技術特點及優勢

技術特點

Apache DolphinScheduler 是一個分散式易擴展的帶有強大可視化 DAG 界面的新一代工作流調度平臺 ,立項之初即確立了使命 —— “解決大數據任務之間錯綜複雜的依賴關係,使整個數據處理過程直觀可見”,至此配置工作流程無需代碼即可完成!

作為強大的DAG可視化界面的分散式大數據工作流調度平臺,Apache Dolphin Scheduler 解決了複雜的任務依賴關係和簡化了數據任務編排的工作。

它以開箱即用的、易於擴展的方式將眾多大數據生態組件連接到可處理 100,000 級別的數據任務調度系統中來。

其整體特征如下:

(1)雲原生設計:支持多雲、多數據中心的跨端調度,同時也支持K8s Docker部署與擴展,性能上可以線性增長,在用戶測試情況下最高已經支持10萬的並行任務控制;

(2)高可用、高穩定性:去中心化的多Master/Worker的架構,可以自動任務平衡,自動高可用,確保任務在任何節點死機的情況下可以具有完整性完成整體調度;

(3)用戶界面友好:可視化的DAG圖,包括子任務,條件調度、腳本管理、多租戶等方便功能,並具有讓運行任務實例與任務模板分開,讓你的平臺維護人員和數據科學家都有一個方便易用的開發和管理平臺;

(4)支持多種數據場景:支持流數據處理,批數據處理,暫停、回覆、多租戶等,對於spark,hive,MR,flink,clickhouse等等平臺都可以方便直接調用;

(5)支持多種調度機制:任務調度機制,支持時間觸發,包括定時觸發、迴圈觸發、間隔觸發;事件觸發機制,支持前置觸發和後置觸發;

(6)支持數據分析、可視化的監控功能、完善的告警模塊

任務整體情況監控

Worker監控示例

告警實例

技術優勢

首先,‌Apache Dolphinscheduler調度系統的本質是滿足用戶使用其進行做調度的需求,‌其最大的優勢在於方便、‌簡易、‌美觀,‌這使得即使是不懂代碼的人也能使用它進行調度操作。‌

這一點使得Dolphinscheduler調度系統在眾多調度系統中脫穎而出,‌成為用戶優選的原因之一。‌

其次,‌海豚調度作為開源項目,‌其成功得益於全球頂尖人才的參與和貢獻。‌開源模式打破了公司和組織的邊界,‌甚至國家和國家的邊界,‌使得全球最頂尖的架構師、‌開發者等能夠組織到一起,‌共同為項目貢獻力量。‌這種模式凝聚了全球最頂尖的人才的想法,‌使得項目能夠持續多年,‌並且幫助更多的人,‌而不僅僅是為了某一家公司的盈利或發展。‌

再次,我們將Apache DolphinScheduler和原本採用的系統調度器Azkaban進行了對比,發現Azkaban中的缺點不可忽視,如無可視化界面、任務調度多時易卡死、部署複雜、無法暫停任務、集群擴展差等。

對比如下:

DolphinScheduler與Azkaban對比

用海豚做什麼:

  1. 用海豚實現對指標計算程式的定時調度:編寫java程式實現指標計算功能,採用海豚可以靈活的傳遞主程式參數,滿足計算程式多維度數據處理,操作可視化。

  2. 對複雜關聯查詢的關聯腳本進行定時調度:海豚支持流式方式組裝任務,滿足了多表多條件複雜查詢串聯執行,可以及時監控任務的執行狀態,支持重試、指定節點恢復失敗、暫停、恢復、終止任務等操作。

綜上所述,‌選擇Apache Dolphinscheduler調度的原因不僅在於其用戶友好、‌易於使用的特點,‌還在於其作為一個開源項目所具有的全球頂尖人才的參與和貢獻,‌這些因素共同使得Dolphinscheduler調度成為一個值得選擇的調度系統。‌

生產實踐

二次開發

我們在使用Apache DolphinScheduler時,經過各種場景的試用和測試,升級了用戶體系,重構了項目級參數功能,優化了用戶體驗,修改了調度Java任務的異常問題。

1、項目級別變數

動態擴展項目中項目級別參數的使用,併在列表中對對應的參數的實際值進行展示等,同時可以根據項目參數的名稱對引用了該參數的工作流進行查詢跳轉。

定義不同的項目級參數,展示實際值

添加引用流程按鈕

根據圖二中選中的參數查詢展示工作流

2、Java類任務

該類任務,支持使用單文件和JAR包作為程式入口。

點擊項目管理 -> 項目名稱 -> 工作流定義,點擊“創建工作流”,進入DAG編輯頁面;

拖動工具欄的JAVA任務節點到畫板中。

添加java任務流程

Java類任務中相關參數配置

主程式參數:作為普通JAVA程式main方法入口參數;

虛擬機參數:配置啟動虛擬機參數;

腳本:若使用JAVA運行類型則需要編寫JAVA代碼,代碼中必須存在Public類,不用寫Package語句;

資源:可以是外部JAR包,也可以是其他資源文件,他們會被加入到類路徑或模塊路徑中。

3、個性化界面

按照用戶操作習慣,我們重新定製了操作相關的按鈕,以及按鈕較多時收起、展開;

在項目管理界面,可以動態選擇需要的項目包,在無需返回到項目管理首頁重新選擇項目。

新按鈕樣式

收起展開較多按鈕

項目選擇

項目實踐

使用Apache DolphinScheduler 之後,我們根據實際業務需要進行二次開發之後,很好的解決了一些需求,下列簡述其中幾個場景:

1、將原有Azkaban中的調度任務平行遷移到DolphinScheduler中

Azkaban中流程示例:

Azkaban流程定義

Azkaban流程中各個節點執行情況

平行遷移到Apache DolphinScheduler中示例:

DolphinScheduler中流程

2、對於數據源模塊,動態擴展了從第三方倒入數據源,增加了數據源的可用性

資產導入數據源

數據源詳情

解決了指標計算程式定時調度問題,使用海豚調度可以靈活傳遞計算程式需要的參數併在調度過程列印相應日誌方便跟蹤排查問題。

解決了多個複雜的關聯查詢串聯執行時中途被阻斷導致的整個全流程失敗問題,海豚調度可以在失敗的節點重新跑流程,不需要再將成功的節點再重跑一次導致伺服器資源過度占用的問題,解決了Flink批流作業被動觸發的問題。

在公司項目的生產過程中目前已實現日均1000+的任務被調度處理,包含了4條產品線的20多個業務系統,離線開發的任務多半已遷移在Apache DolphinScheduler進行配置,極大的提升了數據開發人員的研發效率,方便數據開發人員維護工作。

後期發展計劃

在日常的運維工作還存在一些問題,主要包括任務失敗的及時告警、多項目任務的巡檢及對任務完成情況的準確把握等問題。

針對上述問題,計劃實施一系列的自動化運維措施,需實現自動化推送功能,每天定時的將生產調度的報告發送到企業微信群中,包括所有任務的執行情況,成功、失敗的具體情況;

對失敗的任務,增強告警機制,確保任務出現問題是能夠及時通知運維團隊,並作出迅速的響應和處理。

未來願景

我們團隊對於 Apache DolphinScheduler 的未來願景主要體現在以下幾個方面:

  1. 雲原生支持增強

期望Apache DolphinScheduler 進一步增強對雲原生環境的支持,在生產環境可使用worker 自動擴縮容特性。

  1. 異構數據源的Join 組件擴展

異構數據源之間的Join組件能極大的提升數據開發的能力和效率,能解決複雜數據任務之前同步數據的一致性問題。

Apache DolphinScheduler 的未來必然能構建一個更加強大、靈活、易用和可靠的開源調度系統,以滿足用戶對數據處理和調度的複雜需求,推動數據處理技術的發展和進步,希望社區越來越好!

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 出乎意料的現象 我們有一張測試表 t1,表中有一些數據,當 session1 開啟一個事務,並執行了 select for update 操作後仍未提交事務,在併發事務(如 session2)開啟事務並行執行一些操作會有不同的鎖現象,表現在: select for update 會出現鎖等待 del ...
  • Linux平臺安裝Oracle 19c的時候遇到了下麵錯誤“[INS-35180] Unable to check for available memory”,如圖所示: 具體的錯誤信息如下所示: Additional Information:Exception details - PRVG-190 ...
  • SQL Server的Descending Indexes降序索引 背景索引是關係型資料庫中優化查詢性能的重要手段之一。對於需要處理大量數據的場景,合理的索引策略能夠顯著減少查詢時間。 特別是在涉及多欄位排序的複雜查詢中,選擇合適的索引類型(如降序索引)顯得尤為重要。本文將探討如何在SQL Serv ...
  • 背景 最近碰到一個 case,一個 Redis 實例的記憶體突增,used_memory最大時達到了 78.9G,而該實例的maxmemory配置卻只有 16G,最終導致實例中的數據被大量驅逐。 以下是問題發生時INFO MEMORY的部分輸出內容。 # Memoryused_memory:84716 ...
  • 目錄使用C語言連接庫的安裝C APImysql_initmysql_real_connectmysql_closemysql_querymysql_set_character_setmysql_store_result 使用C語言連接 mysql操作是線程安全的(事務) 以API路線認識mysql ...
  • 目錄用戶用戶管理查詢所有用戶查看當前用戶查看當前連接數創建用戶刪除用戶修改密碼規則查看規則/策略規則說明臨時設置持久設置修改密碼許可權資料庫提供的 許可權列表查看許可權給用戶授權回收用戶許可權 用戶 用戶管理 mysql用戶管理位於資料庫mysql中的user表中 mysql> show tables; + ...
  • 摘要 在學習MySQL語法之前,我們需要先解決在Ubuntu或CentOs環境下的“軟體安裝”的問題。本文梳理了安裝前後的各個步驟及有關的註意事項,主要涵蓋了安裝前的準備工作、如何安裝mysql,以及安裝之後如何啟動、如何正式使用這幾個方面。建議讀者先瀏覽一遍,留心相關的註意事項,或許能令自己稍後的 ...
  • 目錄MySQL卸載環境查看是否已安裝MySQL卸載mysql服務查看是否卸載乾凈MySQL安裝查看linux版本選擇MySQL版本獲取mysql官方yum源rpm安裝mysql官方yum源安裝mysql服務查看是否安裝成功配置MySQL簡單登錄mysql命令免密登錄配置my.cnf 其他配置項設置開 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...