節省60個開發工時,攜程遠離線上整合資料倉儲的實施

Mondo 社會 更新 2024-02-22

本文主要介紹攜程旅行團隊資料倉儲建設的實施與實踐,將從業務痛點、業務目標、專案架構、專案建設等維度進行。

一、業務痛點

隨著對實時資料需求的不斷增加,離線資料倉儲暴露出的業務痛點越來越多,例如:

煙囪開發模式的實時需求。

中間資料的可重用性較差。

與資料開發分離。

資料生產服務周期長。

實時表任務雜亂無章且難以管理。

缺少實時譜系、基本資訊、監控等。

實時資料:沒有質量監控工具。

實時任務:運維門檻高,質量體系薄弱。

這種典型問題會給我們人類的效率、素質、管理等帶來極大的考驗,亟需乙個系統的平台來解決。

2. 業務目標

圍繞已知業務痛點,依託公司現有的計算資源、儲存資源、離線數倉標準規範等,我們的目標是構建乙個在人力、質量、管理層面的體系。 如下圖所示:

1.人類效率水平

實現資料開發解決方案的標準化,如標準化資料處理、相容性、算力整合等。

分鐘級資料部署,實現BI學生級資料介面註冊、發布、除錯等視覺化操作。

2.質量水平

資料內容DQC,如內容是否正確、不完整、及時、是否符合**等。

資料任務預警,如有無延遲、有無背壓、吞吐量如何、系統資源是否充足等。

3.管理層

視覺化管理平台,如端到端血緣、資料表任務、質量覆蓋率等基礎資訊。

規範一體化資料倉儲的全流程,如資料建模規範、資料質量規範、資料治理規範、儲存選型規範等。

三、專案結構

專案架構如下,系統主要包括:原始資料、資料開發、資料服務、資料質量、資料管理等模組,提供秒級實時資料處理和分鐘級資料服務部署,用於實時資料開發學生和後端資料服務開發。

不同資料的資料首先由標準化的ETL元件進行標準化,資料由流量工具進行預處理,採用流批融合工具和業務資料處理模組進行分層域構建,產生的資料由資料服務模組直接部署進行資料API部署, 最後被業務應用使用,整個環節都會有相應的質量和運維保障體系。

四、專案建設

1.資料開發

本模組主要包括資料預處理工具和資料開發方案選擇。

1)流量**工具

由於入口數量多,人流量大,主要問題如下:

可能有多種方法可以解析同一維度中的資料**;

使用的埋地資料佔總量的20%左右,資源消耗嚴重,每個下游都會重複操作;

新增埋點後,需要對資料處理進行開發和干預(極端情況下,所有使用者都參與其中);

如下圖所示,流量工具動態接入多個資料來源,資料處理簡單,標準化後將有效資料寫入下游,可以解決上述問題。

2) 業務資料處理解決方案的演變

選項 1 - 簡單融合來自 ** 的資料

背景

剛開始的時候,業務需求比較簡單,比如計算使用者歷史的實時訂單量,彙總使用者歷史購買的景點資訊等。 這些簡單的要求可以抽象為離線資料和實時資料的簡單聚合,如數值加減乘除、字元追加、去重和彙總等。

溶液

如下圖所示,資料提供者提供標準化的T+1和實時資料訪問; 資料處理:T+1和實時資料融合; 一致性檢查; 動態規則引擎處理等; 資料儲存:聚合資料的水平擴充套件; 標籤對映等。

方案 2 - 支援 SQL

背景

儘管選項 1 具有以下優點:

分層簡單且對時間敏感。

規則配置速度快,可以處理大量複雜的 UDF

規則引擎等

相容整個 J**A 生態系統。

但也有明顯的缺點:

BI SQL開發人員基本上無法干預並依賴開發。

在很多SQL場景下,使用J**A的開發成本高,穩定性差。

沒有有效的資料分層。

過程資料基本不可用,如果要儲存過程資料,需要重複計算,浪費計算資源。

溶液

如下圖所示,Kafka 承載資料分層功能,Flink SQL 計算引擎,OLAP 承載資料儲存和分層查詢,完成了資料倉儲系統的典型分層構建。

但是,由於 Kafka 和 OLAP 儲存引擎是兩個實體,因此可能會存在資料不一致的情況,例如 Kafka 正常,資料庫異常,這會導致中間分層資料異常,但最終結果是正常的。 為了解決上述問題,如下圖所示,採用傳統資料庫使用的binlog模式,Kafka資料很大程度上依賴於DB的資料變化,因此最終結果強烈依賴於中間的分層結果,無法避免元件BIG導致的資料不一致, 但大多數場景基本上都可用。

方案 3

背景

但是,選項 2 具有以下優點:

SQL格式。 自然分層查詢。

但也有明顯的缺點:

資料不一致。

插入binlog時沒有問題,但是更新刪除不容易,更新時需要大量的去重操作,SQL非常不友好。

對於長期的資料聚合,一些運算元,如max和min,具有較大的flink狀態,容易出現不穩定。

還要考慮 Kafka 資料亂序導致的資料覆蓋問題。

溶液

如下圖所示,借用儲存引擎的算力,以 Kafka 的二進位日誌作為資料計算的觸發邏輯,使用 Flink udf 查詢資料庫進行直接連線。

優勢:

SQL格式。 自然分層查詢。

資料是一致的。 flink 狀態很小。

它可以支援長期持久的資料聚合。

您無需擔心無序的二進位日誌和更新引起的問題。

弊:

併發是不能承載的,很大程度上取決於OLAP引擎的效能,所以當資料來源在資料來源中時,我們會限制視窗的速率或水平擴容資料庫。

sink 和 drawdown 流的組合被打斷了,比如:group by,其實就是乙個無腦的upsert,UDF的聚合無法取代Flink的原生聚合;

每個解決方案都有自己的場景,您需要根據不同的業務場景和時延需求來選擇解決方案。 目前,我們 86% 的場景可以使用解決方案 3 進行,並且由於 Flink 116、在各類整合特性的加持下,基本可以覆蓋後期的所有場景。

2.資料服務

該模組提供資料同步、資料儲存、資料查詢、資料服務等能力,可在簡單場景下實現分鐘級資料服務部署能力,節省90%的開發工時。 實現離線資料DQC強依賴、工程端DQC異常、客戶端>介面層資源隔離、限流、斷路器、全鏈路沿襲(客戶端-伺服器端表Hive沿襲)管理等,提供部署各種效能需求介面的能力,按需提供運維保障能力。

架構如下:

3.資料質量

該模組主要分為資料內容質量和資料任務質量。

1) 資料內容

正確性、及時性、穩定性

這部分又分為資料操作變更、資料內容一致性、資料讀取一致性、資料正確性和及時性等。 如下圖所示,如果資料異常,可以將資料錄入公司的HickWall報警中心,並根據預警規則生成報警。 資料內容:會有定時任務,執行使用者自定義的SQL語句,將資料寫入告警平台,可實現秒級、分鐘級預警。

讀取一致性

如下圖所示,如果在資料讀取過程中存在跨表聯合查詢,如果其中乙個表出現問題,大多數情況下不會顯示錯誤的資料,只會顯示歷史記錄中的正確資料,恢復表後會顯示所有資料。

例如,如果表2中的資料異常,最近2小時內沒有資料,則當資料暴露給使用者時,業務需要展示2小時前的資料,異常資料會給出前端異常提醒。

一致性

關於離線和實時資料一致性。 如下圖所示,我們用一種簡單的方法,直接將實時資料同步到Hudi,使用Hudi對照離線和實時資料進入告警平台。

2) 資料任務

上游任務

依託公司定製的預警埋點、告警中臺、計算平台等工具,對上游訊息佇列是否延遲、音量是否異常等關鍵指標進行監控預警。

當前任務

您可以對資料處理任務的吞吐量、時延、反壓、資源等關鍵指標進行監控和預警,防止資料處理任務出現長期異常。

4.資料管理

該模組可以串聯資料處理、質量等模組,並提供視覺化管理平台,如:表沿襲、DQC配置、任務狀態、監控等基本資訊。

下圖顯示了每個資料表中上下游資料生產任務的血緣關係。

資料表的質量資訊詳情如下圖所示。

下圖總結了各種UDF表的基本資訊。

第5章 展望

目前系統基本能夠承接團隊大部分資料開發需求,後期我們還會在可靠性、穩定性、易用性等方面繼續探索,如完善整個資料治理體系、構建資料自動恢復工具、排查運維智慧型元件、探索服務分析一體化等。

作者丨成瑞**丨***攜程科技 (ID: 攜程科技) DBAPLUS社群歡迎技術人員投稿,投稿郵箱editor@dbapluscn

相關問題答案

    大港油田60年勘探開發工作回顧

    六十年的辛勤耕耘誠信為本,創新未來 大港油田年勘探開發工作回顧 如果說大港油田近年的勘探開發工作是一部輝煌的石油交響曲史詩,那麼自年月日以來,華北石油勘探指揮部鑽出第一口探井,聲音震動森林,開啟了渤海灣地區勘探開發的序幕。從年到年,大港油田走過了整整一年,在中國共產黨的領導下,大港油田人始終高唱 我...

    如何消除浪費,實現節約?

    要杜絕浪費,可以從以下幾個方面入手 .節約食物 正確計畫飲食,避免過度購買可能過期或變質的食物。貯存食物時,應使用密閉容器,合理分割食物,減少食物浪費。.減少能源消耗 關掉不必要的電器和電燈,明智地使用空調和暖氣。選擇具能源效益的電器和燈具,以減少能源浪費。.節約用水 修理漏水的水龍頭和水管,明智地...

    如何節約用水?

    節約用水是現代社會面臨的重要課題。隨著人口的增長和工業化,對水的需求不斷增加,而可用的水資源相對有限。因此,如何有效節約用水 保護和合理利用水資源成為全球關注的焦點。在本文中,我們將介紹一些節約用水的方法和建議。.提高用水效率 提高用水效率是節約用水的關鍵。在家庭 工業和農業中,我們可以通過改進用水...

    “情人節”約會初戀

    月日晚,我的好朋友,四川農村青年新聞工作坊的學生,澄清並分享了他在月日情人節晚上寫的 情人節約會初戀 希望我能給出我的意見。我覺得這是乙個非常有味道的初戀故事,我和讀者分享一下 情人節 約會初戀作者清晰 農曆正月初四,我從居住地出發,參加 四川農村青年新聞工作坊成立周年暨郫都區風收集活動 目的地是初...

    節儉是經營家庭的方式

    勤儉節約是中華民族的傳統美德,也是家族辦家之道的核心原則。在家庭生活中,節儉不僅是一種生活方式,更是一種精神追求。節儉節約有助於合理利用家庭資源。通過減少浪費和不必要的支出,家庭可以更有效地管理財務,確保經濟穩定和可持續性。勤奮和節儉有助於培養兒童良好的道德品質。在家庭教育中,家長要以身作則,引導孩...