構建高效數據流轉的 ETL 系統:數據庫 + Serverless 函數計算的最佳實踐

概述

隨着企業規模和數據量的增長,數據的價值越來越受到重視。數據的變化和更新變得更加頻繁和複雜,因此及時捕獲和處理這些變化變得至關重要。爲了滿足這一需求,數據庫 CDC(Change Data Capture)技術應運而生。然而,從 ETL 架構的角度來看,CDC 僅滿足了數據的提取(Extract)能力。

爲了實現完整的 ETL 架構,並完成高效、實時的數據集成、處理和同步,阿里雲 Serverless 函數計算(FC)與數據庫 CDC 技術深度融合。助力企業構建完整的 ETL 架構,實現數據的提取、轉換和加載。通過將 CDC 作爲事件驅動的數據源,將數據變化作爲事件觸發 Serverless 函數的執行,可以實現實時的數據處理和同步,有助於提升業務決策和分析的準確性和效率。

架構介紹

下面將從 ETL 模型入手,逐步講述 FC + CDC 如何適配符合 ETL 模型的業務。

ETL 模型

在大數據領域,承載數據流轉、加工業務的系統架構都可抽象爲 ETL 模型,它由三個主要步驟組成:提取(Extract)、轉換(Transfomr)和加載(Load)。

  1. 提取:從數據源中提取數據。數據源可以是各種數據存儲系統。如:數據庫、文件系統、消息隊列、API接口等。
  2. 轉換:數據經過一系列的轉換操作轉換爲目標系統可以接受的格式和結構。如:數據清洗、數據合併、數據富化等。
  3. 加載:將轉換後的數據加載到目標服務中。目標服務可以是數據倉庫、數據湖、BI 系統等。

此架構應用廣泛,幫助企業管理和利用數據,實現數據驅動的決策和業務轉型。

CDC + ETL

CDC 和 Extract(E) 是數據處理的兩個概念,前者目的是捕獲數據庫中的變化數據,後者目的是從數據源中提取特定的數據集合。但迴歸業務本身,兩者均是從數據源獲取業務所需的數據,因此 CDC 和 ETL 的結合也是必然結果。兩者的結合可構建更完整高效的數據處理流程,實現實時增量數據抽取和處理。相比傳統的定期批量抽取方式,CDC 可更及時地捕獲數據變化,使目標系統中的數據更加實時和準確。

阿里雲 DTS + FC

在阿里雲數據庫產品體系中,數據傳輸服務 DTS(Data Transmission Service)扮演了 CDC 的角色,作爲實時數據流傳輸服務,它能夠捕獲上游數據庫的變更信息,並將這些變更推送給下游服務。當下遊服務是函數計算時,可以利用函數計算的自定義代碼能力,對數據進行自定義加工(T)和投遞(L)。如下圖所示,FC 和 DTS 的深度集成構建了完整的 ETL 體系,爲業務系統的快速搭建提供了幫助。

功能詳解

針對上文提到的 DTS + FC 架構,下面將剖析內部細節,深入理解系統的運行方式。

DTS 架構

DTS 在數據採集和數據傳輸上提供了完備的能力,DTS 系統可抽象爲如下三大模塊:

1.Poller:從上游豐富的數據庫服務獲取數據,具體如下:

    • 傳輸數據類型:可傳輸存量數據或增量數據;
    • 數據獲取方式:針對存量數據,DTS Poller 以併發查詢方式掃描全表,將掃描結果投遞至下游;針對增量數據,DTS Poller 監聽並讀取上游數據庫的增量日誌文件,解析文件中的日誌信息並投遞至下游;
    • 增量數據源:針對不同的上游數據庫,DTS 會讀取不同的增量日誌文件。例如:當數據庫爲 MySQL 時讀取 Binlog 文件,當數據庫爲 MongoDB 時讀取 Oplog 文件。

2.Format Plugin:將獲取的數據統一格式化爲 Canal Json 格式,格式的統一標準化便於數據解析邏輯複用於不同的數據源;

3.Sinker:將格式化後的數據推送給下游 FC。

FC 架構

FC 和 DTS 的深度集成保證了 FC 可以接收 DTS 採集的數據庫數據,並根據用戶自定義代碼實現數據加工和數據投遞功能,具體如下:

  1. 請求路由:FC 網關將 DTS 發送的事件路由到 FC 後端;
  2. 調度處理:FC 調度層自動擴容計算節點運行用戶代碼,處理上游傳遞的 DTS 事件;
  3. 代碼執行:用戶的代碼按預期運行,通常邏輯爲加工處理 event 事件,並將處理後的結果以 SDK/API 等方式發送給外部服務。

從上圖可以看到,您僅需關注數據加工和投遞的業務邏輯,並通過簡單代碼片段完成實現,FC 後端會自動伸縮計算節點執行代碼,您無需關注系統的基礎設施建設、資源運維、伸縮、監控、報警等一系列繁瑣工作,極大提升開發效率。同時 FC 作爲 Serverless 應用,支持按量付費,避免長期預留機器資源帶來的資源低效問題。

應用場景

OLTP 到 OLAP 的數據傳輸

什麼是 OLTP 和 OLAP?

  • OLTP:指在線事務處理。通過以事務單位進行操作,並需要支持高併發寫入和數據一致性。常見的服務如:關係型數據庫( MySQL、PostgreSQL 等)、訂單處理系統、客戶關係管理系統等。
  • OLAP:指在線分析處理。通常用於從大量的數據中提取、聚合和分析信息,滿足數據分析和決策支持。OLAP 系統通常以查詢爲基礎,可以進行復雜的數據查詢和分析操作。常見的服務如:AnalyticDB、ClickHouse、Power BI 等。

從上面描述看,OLTP 和 OLAP 是兩種不同的數據處理服務,用於滿足不同的業務需求。OLTP 系統適用於處理實時的交易和業務操作,而 OLAP 系統適用於從大量數據中進行分析和決策支持。在實際應用中,OLAP 的數據來源就是不同的 OLTP 數據庫,所以 OLAP 本身不產生數據,通過 ETL 從 OLTP 抽取數據到 OLAP 數據庫即數據倉庫中做整合清洗達到可分析的數據標準。而 DTS + FC 恰好可以連接兩類服務,打通數據通路。

CDC 事件驅動模型

什麼是事件和事件驅動?

  • 事件:在業務系統中,事件是指系統或業務中發生的重要、有意義的事情或狀態變化。事件可以是內部觸發的,也可以是外部輸入的,通常與業務流程、數據更改、用戶操作等相關。
  • 事件驅動:事件驅動架構是一種系統設計範式,其中事件是系統中的核心組成部分。在這種架構中,系統的各個組件通過訂閱和響應事件來進行通信協作,實現松耦合、可擴展的系統架構。

CDC 因用於捕獲數據庫中的數據變化,常被當做事件驅動後續流程的執行,常見的場景如下:

  • 訂閱和發佈系統:CDC 可作爲訂閱和發佈系統的一部分,將數據庫中的數據變化作爲事件發佈給相關的訂閱者。這可以用於實現發佈-訂閱模式的事件驅動系統架構。
  • 數據校驗:CDC 可將數據庫中變化的數據推送給 FC。做定製化數據校驗,校驗數據的合理合規,這在金融、財務訂單等系統非常重要。
  • 數據審計:CDC 可將數據庫中變化的數據推送給 FC,經由 FC 持久化至任意三方服務,用於數據審計和數據可追溯需求。
  • 變更通知:當特定關鍵數據變動後,以任意方式發送特定通知,如:郵箱、釘釘、短信、電話等。

總結&展望

CDC 和 Serverless 函數計算的結合,可以實現實時的數據處理和響應,同時減少對基礎設施的依賴和管理。在實際應用中,可將 CDC 作爲事件驅動的數據源,將數據變化作爲事件觸發 Serverless 函數的執行。這樣可以實現實時的數據處理和分發,同時利用 Serverless 函數計算的彈性擴展能力,根據實際負載動態分配計算資源。總而言之,DTS 和 Serverless 函數計算的集成爲企業提供了更高效、靈活和可靠的數據處理解決方案。未來函數計算將探索更多的數據源(Oracle、PolarDB PostgreSQL、PolarDB MySQL 等),滿足更多的業務需求。

作者:柳下

原文鏈接

本文爲阿里雲原創內容,未經允許不得轉載。

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