DataPipeline丨新型企業數據融合平臺的探索與實踐

DataPipeline丨新型企業數據融合平臺的探索與實踐

一、關於數據融合和企業數據融合平臺

數據融合是把不同來源、格式、特點性質的數據在邏輯上或物理上有機地集中,從而爲企業提供全面的數據共享。

企業數據融合平臺,通常的表現形態爲運行着大量數據同步和轉換任務的分佈式系統。其源端一般爲各類偏實時的業務數據存儲系統,目的端爲各類數據倉庫/對象存儲。

二、企業數據融合平臺的典型架構

下圖爲數據融合平臺的典型架構,源端是不同的數據存儲系統,另一端是各種類型的數據倉庫,關係型數據庫或者文件存儲等。中間爲數據融合平臺的簡單架構,組件Source connectors負責做數據的採集。

將數據採集之後,會將其做成格式化數據放到Transport Channel,Transport Channel一般會用Source隊列或其它流式數據框架,負責做中間的緩存,包括分佈式的支持,數據的分發, sink connectors去負責把數據分別寫入不同的數據目的地。

DataPipeline丨新型企業數據融合平臺的探索與實踐

三、企業數據融合需要解決的關鍵問題

  1. 數據異構問題

面臨繁瑣的數據源和目的地適配以及異構數據源的轉換問題。

  1. 隨時變化的數據結構

數據源結構會隨時發生變化,造成下游寫入失敗。當數據結構發生改變時,需要保證數據像正常一樣,不會出現任何問題。

  1. 數據平臺的擴展性

需要根據業務驅動做水平拓展,甚至需應對一對多的分發要求,另外也需要處理和解決多任務並行的QoS。

  1. 數據一致性

在任何情況下都需要保證數據是一致的,這也是在生產過程中需要保證的問題。

四、消息隊列在數據融合平臺的作用

首先是解耦,消息隊列可以將源端的數據採集跟移動端的數據完全進行解耦。如果數據寫入端出現任何問題,不會影響數據採集的穩定型。

Schema Mapping幫助我們做到了數據源和目的地結構的解耦,減少開發新的connector的複雜度。

同時消息隊列提供了水平拓展和高可用的性質,當需要接入更多數據且系統不能支撐時,我們可以輕易的做水平拓展,支持更大的數據量。

另外,對消息隊列和數據同步一致性的問題做了保證,至少能保證數據同步的順序性。

DataPipeline丨新型企業數據融合平臺的探索與實踐

五、DataPipeline現有架構

下圖爲DataPipeline基於Kafka connect消息隊列所做的架構,Kafka本身是一個非常成熟的消息隊列,Kafka connect是其下面的一個子項目,相當於給kafka consumer 和 kafka producer提供了一個封裝,它實現了分佈式和高可用,同時幫助我們負責和kakfa進行交互。

DataPipeline丨新型企業數據融合平臺的探索與實踐

六、Kafka connect-offset管理

消費者會有一個offset的概念,用來記錄消費進度,Kafka connect會自動化地做消息offset的管理,它可以等我們消費完一些數據之後,自動提交消費進度,然後在Kafka中做存儲。

在讀取數據的時候, connector會將數據從數據源抽取出來寫到data topic,用來做數據中間的緩存。同時connector在同步過程中也會週期性的將offset提交到offset Topic,相當於每讀取一段時間,存一個存檔點。

DataPipeline丨新型企業數據融合平臺的探索與實踐

週期性的offset提交如果失敗的話,會導致數據任務重啓恢復時無法完全恢復到最後寫入的offset點。這種情況就會導致數據的重複讀取和重複寫入,會出現數據一致性的問題,以下解決方案可以從一定程度上避免這個問題:

  1. 依賴目的地的特性進行去重達到數據的最終一致性,例如: RDBMS用主鍵進行去重。

  2. 依賴消息隊列的事務信息避免源端重複,保證數據寫入和offset寫入的事務性提交。

  3. 目的端在寫入後記錄單獨的offset到redis緩存,並在任務恢復之後根據offset進行過濾,避免重複寫入。減少offset rewind帶來的數據重複,但是由於寫入數據和記錄offset並不是事務操作,所以也不保證exactly once delivery。

  4. 依賴目的地的事務性,在目的地建立臨時空間記錄寫入的offset,並在任務恢復之後根據offset進行過濾,避免重複寫入,可以保證exactly once delivery。但是要求目的地可以支持事務性,並且會在目的地有額外的數據存儲。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章