【用戶案例】太美醫療基於Apache DolphinScheduler的應用實踐

大家好,我叫楊佳豪,來自於太美醫療。今天我爲大家分享的是Apache DolphinScheduler在太美醫療的應用實踐。今天的分享主要分爲四個部分:

  • 使用歷程及選擇理由
  • 穩定性的改造
  • 功能定製與自動化部署
  • 運維巡檢與優化

使用歷程及選擇理由

公司介紹

我們是一家專注於生命科學產業的運營平臺公司,致力於提供醫療行業解決方案。

file

作爲一家基於AI大數據雲平臺的藥品全生命週期解決方案商,我們提供從藥物研發到上市的全流程服務。我們的服務範圍涵蓋醫藥研發、藥物警戒、醫藥預警等多個領域。

服務與技術平臺

在提供服務的過程中,特別是在藥物警戒服務方面,我們依賴數據的調度及ETL清洗,這讓我們與Apache DolphinScheduler結緣。我們的平臺架構底層基於Hadoop生態體系,負責大數據的開發、調度,並最終輸出相關的報表和接口服務。

file

在調度平臺方面,我們採用了Apache DolphinScheduler和Airflow,其中Airflow是較早的大數據開源調度平臺之一。

爲何選擇DolphinScheduler

選擇Apache DolphinScheduler作爲我們的技術平臺是在2020年一個醫藥營銷平臺項目開始時做出的決策。

我們對Airflow、Azkaban和Apache DolphinScheduler進行了綜合比較和驗證。考慮到我們的平臺主要是基於SQL進行調度,類似於ERP平臺的場景,最終選擇Apache DolphinScheduler作爲我們的統一技術平臺。

經過三年的發展,我們再次受到社區的邀請,分享在不同場景下使用Apache DolphinScheduler的經驗及相關的優化經驗。

升級歷程

自2020年開始使用Apache DolphinScheduler以來,太美醫療經歷了幾個重要的升級階段:

  • 2020年:正式引入Apache DolphinScheduler,標誌着我們開始系統地整合大數據處理流程。
  • 2021年:使用Apache DolphinScheduler 1.3.3版本替代Airflow,成爲公司統一的調度平臺。
  • 2022年:隨着Apache DolphinScheduler 2.0版本的發佈,我們引入了釘釘告警等便利性功能,以提升開發團隊的工作效率。
  • 2023年:面對龐大的任務量和工作流定義(4000+定義,日調度量2萬+),我們從2.0版升級至3.0.1版,並進行了自動化改造,以應對日益增長的維護挑戰。

這一升級歷程不僅反映了太美醫療對Apache DolphinScheduler技術的深度探索,也體現了我們對開源技術持續優化和改進的承諾。

實現的成果

通過不斷的技術升級和改造,我們在Apache DolphinScheduler的應用實踐中取得了顯著成果:

  • 部署規模:我們在國內外部署了多套DolphinScheduler,覆蓋了SQL節點、Spark節點、Shell類型節點等多種作業類型。
  • 調度能力:我們的工作流定義達到了4000+,日調度量超過2萬+,展現了強大的調度能力。
  • 自動化與集成:實現了與Git的集成,支持複雜任務的自動創建和快速部署到新集羣環境。
  • 環境管理:構建了一套完整的環境管理策略,包括測試(Test)、用戶接受測試(UAT)和生產(PROD)環境的同步調度,有效降低成本,提升效率。
  • 穩定性優化:即使在低配的集羣環境下,也保證了穩定的調度性能,並通過定期巡檢功能維持大數據集羣的穩定運行。

穩定性改造詳解

在Apache DolphinScheduler的應用過程中,穩定性是我們極爲重視的一點。

面對環境和資源的限制,如何通過技術改造提升系統的穩定性,是我們需要解決的關鍵問題。

穩定性的難點

  • 資源限制與宕機問題:在資源受限的情況下,系統很容易出現宕機,尤其是當集羣較小的時候。
  • 任務提交過多導致堵塞:在高併發場景下,大量任務提交可能導致系統無法按時完成調度,特別是對於需要在特定時間完成的任務(如T+1任務)。
  • 偶發性問題:包括主鍵依賴重複和SQL節點偶發性調度問題,以及開發過程中對Git同步開發的需求。

改造措施

針對上述難點,我們進行了以下幾方面的改造:

file

  • 優化配置與資源利用:調整啓動參數,將內存配置從4G降低到128M和1G,保證服務穩定運行同時最大化資源利用。

  • 調整masterworker的參數,如拉取命令的數量和準備執行的任務數量,以適應四核8G的小型集羣環境。

  • 自動巡檢與告警:增加自動巡檢功能,及時發現並告警處理問題,減少手動干預,提升穩定性。

  • 調度策略優化:對於核心任務,選擇更穩定的調度模式,比如使用shell模式代替SQL節點,確保任務的穩定執行。

  • 內存與CPU參數優化:針對內存和CPU的配置進行優化,確保系統在低資源環境下也能穩定運行。

改造成果

通過上述改造,我們實現了以下成果:

  • 提升系統穩定性:系統在三臺4核8G的小型集羣環境下能穩定運行,日常穩定調度3000+任務,顯著減少了宕機和調度失敗的情況。
  • 優化資源使用:服務啓動和運行時佔用的內存明顯降低,提高了資源利用效率。
  • 改善開發體驗:針對開發流程,通過自動化和優化調度策略,減少了開發和運維過程中的困難,提高了開發效率。

自動化創建DAG的背景與實踐

隨着任務量的增長和調度依賴的複雜性提升,手動維護DAG變得越來越困難。我們面臨的挑戰包括:

任務依賴複雜:高複雜度的依賴關係使得手動配置容易出錯。

發佈流程繁瑣:從測試到生產的發佈流程涉及多步驟的人工操作,效率低下且容易出錯。

跨環境部署困難:面對醫療行業對本地化部署的需求,傳統的導入導出方式不適應快速部署的需求。

代碼管理與規範:統一的代碼管理和規範審覈對於保持代碼質量至關重要。

針對以上背景,我們採取了自動化改造,目標是通過自動化工具和流程,簡化DAG的創建、管理和發佈過程,實現跨環境的快速部署,同時保持代碼的統一性和質量。

設計方案與實踐

我們的改造方案包括:

file

自動化DAG生成:開發了工具自動根據業務需求生成DAG,減少人工編寫和維護的負擔。

統一代碼管理:通過Git實現代碼的版本控制和團隊協作,確保代碼質量和一致性。

簡化發佈流程:通過自動化腳本和工具,簡化從測試到生產的DAG發佈流程,提高效率並減少錯誤。

file

通過這些措施,我們不僅提升了調度系統的穩定性和資源利用效率,也改善了開發和運維的工作流程,爲未來面對更大規模的任務調度和複雜的業務需求提供了堅實的基礎。

改造方案與成果

爲了提高工作效率,確保與Apache DolphinScheduler社區版本的兼容性,並簡化後續的升級過程,我們採取了一種以插件形式進行改造的方法,基於Apache DolphinScheduler 3.0版本進行了自動化任務流創建的實現。

改造方案設計

我們的改造方案核心思路是利用Apache DolphinScheduler提供的API,通過一個外部Java程序,自動讀取MySQL中存儲的配置信息,進而自動創建工作流所需的所有依賴流。主要步驟包括:

  • 配置信息存儲:將所有需要的配置信息存放在MySQL數據庫中,這包括工作流名稱、節點名稱、任務的來源(Git地址)、任務類型(計算任務、同步任務等)以及數據源類型和實例。

  • 簡化任務流創建:原計劃通過解析SQL創建任務流的方案由於工作量大,後續改爲直接在任務中配置前置節點依賴,簡化了創建過程。

  • 任務修改類型處理:在上線新任務時選擇“新增”,舊任務更新時選擇“更新”,並配合全局變量的使用,來管理任務的變更。

  • 工作流與節點依賴關係定義:通過配置文件明確NODE節點的前置依賴關係,實現整個工作流節點的串聯。

成果與反饋

改造後的系統實現了通過配置即可自動生成DAG的目標,極大地簡化了工作流的創建和管理過程。主要成果包括:

file

快速創建和部署:只需通過配置SQL腳本,就能創建相應的工作流和任務子節點,實現了快速部署的目標。

提高開發效率:開發團隊可以更便捷地創建任務和部署到各個環境,無需手動進行復雜的配置和部署流程。

保持與社區同步:採用插件化的改造方式,避免了直接修改源代碼的需要,使得系統更容易與Apache DolphinScheduler社區版本保持同步,便於後續的升級和功能獲取。

自動化運維巡檢

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

爲了應對這些挑戰,我們在Apache DolphinScheduler的使用和改造過程中,實施了一系列的自動化運維措施。

自動化運維改造

通過利用Apache DolphinScheduler的元數據信息,我們實現了一個自動推送功能,每天定時將生產調度報告發送到指定的釘釘羣中。這個報告包括了所有任務的運行情況,如哪些任務成功,哪些任務失敗,極大地方便了運維團隊及時掌握任務的執行情況。

對於運維任務失敗的情況,我們增強了告警機制,確保在任務出現問題時能夠及時通知到運維團隊,使他們能夠迅速響應和處理問題。

版本選擇建議

儘管Apache DolphinScheduler作爲一個開源調度工具在市場上表現優異,但像所有開源項目一樣,它也存在一些問題和Bug。

我們希望通過與社區的持續溝通和交流,不僅能減輕運維團隊的負擔,也能貢獻我們的經驗和改進建議給社區,共同推動Apache DolphinScheduler項目的進步。

我們鼓勵所有使用Apache DolphinScheduler的團隊積極參與社區活動,共同提升這個強大工具的能力和穩定性。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章