金融級系統海量流量下高可用架構的道與術

陶然陶然發表於2022-12-20

  本文根據劉波在【第十三屆中國資料庫技術大會(DTCC2022)】線上演講內容整理而成。

   講師介紹  

  從事大資料開發10年+,在滴普科技負責20+個資料專案的架構設計與落地,先後主導了TOP級新零售企業的資料智慧平臺與網際網路醫療企業的資料湖建設,最近1年負責一站式資料智慧開發平臺的研發工作,沉澱DataOps核心理念,並聚焦於湖倉一體和流批一體的架構設計及實踐。

   本文摘要:當前在很多企業中,建設資料平臺,有較多的痛點,如資料平臺建設慢、資料任務型別多、資料開發協同難、資料安全風險高、資料管理無體系、資料質量最佳化難、資料模型最佳化難、資料運營監控難、資料安全共享難等。

  滴普FastData DataFacts面向PB級實時/離線資料開發、運維場景,提供集資料建模、資料整合、資料開發、資料服務等能力於一體的一站式資料開發平臺,遮蔽複雜的技術環節,在保證資料安全底線的基礎上,讓資料開發工程師專注於面向業務需求的資料開發,實現易用、便捷、安全的高質量資料生產能力。

  同時,面向企業資料資源散、亂、差等問題,透過資料標準及規範、資料建模、資料質量、資料資源管理、及資料安全等能力,對企業資料資源進行統一的管理及與運營,提升資料質量和運營效率,讓資料可用、好用、易用。本次分享介紹了FastData DataFacts的架構設計與建設資料平臺案例實踐。

   演講正文:

   DataFacts產品概述

  DataFacts是滴普提供的雲中立、一站式的資料智慧服務平臺,為資料工程師提供資料整合、資料建模、資料開發、資料服務、資料質量、資料安全等開箱即用的服務能力,降低企業數字化轉型實施門檻,提升資料智慧平臺構建效率,賦能企業資料資產持續沉澱,從而實現資料價值可持續釋放。  

   1、關鍵痛點

   資料平臺建設慢:資料平臺涉及元件多,構建難度大、資料開發人員不能專注於資料業務。

   資料任務型別多:缺乏有效手段統一離線/實時資料處理;資料型別多樣化加劇資料流轉及融合難度。

   資料開發協同難:資料開發工具分散,開發任務難以統籌協同,開發效率低、不敏捷;資料任務缺乏統一稽核、釋出、運維機制,易出錯、易返工、難維護。

   資料安全風險高:對資料的訪問、流通缺乏統一的安全策略。

  針對上述痛點,DataFacts可以面向PB級實時/離線資料開發、運維場景,提供集資料建模、資料整合、資料開發、資料服務等能力於一體的一站式資料開發平臺,遮蔽複雜的技術環節,在保證資料安全底線的基礎上,讓資料工程師專注於面向業務需求的資料開發,實現易用、便捷、安全的高質量資料生產能力。

   2、核心能力

   資料整合。基於CDC技術,提供不侵入業務系統的企業級實時資料同步服務,保障資料時效性、可用性;基於WAL架構下的CKP異常自動儲存技術,實現斷點續傳,面對再複雜的網路狀況,也能保證資料傳輸的穩定性;外掛式能力擴充套件,快速迭代資料整合能力和資料來源適配範圍。

   資料建模。支援邏輯模型、物理模型設計,保障建模流程規範可控;支援模型逆向工程,快速容納管理企業存量資料模型;融合多個行業優秀實踐方法論,提升建模效率。

   資料開發。支援WEB SQL的視覺化離線/實時任務開發,降低使用者學習成本;多種任務DAG組織形式,實現跨流程、跨專案任務依賴,方便支援多種業務場景;豐富的大資料元件,根據資源現狀靈活實現多種任務,資源利用率更高;支援資料的開發與生產環境隔離、多人協同開發,更安全、更高效。

   資料運維。資料處理任務以DAG組織並監控,任務修復重跑、暫停、kill等操作更優雅;完備的告警體系,支援自定義告警規則和豐富的日誌資訊,提高運維效率。

   資料服務。拖拽式工作流編排,實現複雜API的場景;統一的企業資料共享服務,嚴格管控資料使用許可權;多視角監控及分析服務的使用情況,高效評估資料資產的價值。

   資料質量。覆蓋資料資產化全流程進行質量監管和檢驗,保障資料完整性、有效性、及時性、一致性、準確性、唯一性;內建質量檢測規則模板並支援自定義規則,使質量檢查場景更豐富;支援與ETL任務關聯執行質量檢查,及時發現問題資料,減少資料汙染。

   資料安全。貫穿資料資產化全程,提供對隱私資料的脫敏、許可權管理和安全審計等多種資料安全管理措施,全方位保障資料的安全運作。

   3、產品價值

   智慧運維,及時高效:資料任務智慧化監控,異常告警及時處理。

   大規模資料同步及ETL:支援PB級離線/實時資料處理規模,以及百萬級任務複雜排程場景。

   敏捷、及時、輕鬆:在開發過程中,基於DataOps理念,保證流暢暢通,讓資料開發更專注、更高效。

   資料安全有保障:資料安全策略貫穿資料資源化全流程。

   建設快、門檻低:平臺元件統一部署,開發工具開箱即用,維護成本低,視覺化的操作介面。

   4、產品優勢

   實時高效能資料同步:基於CDC技術,實現復網路環境下的實時資料實時同步,輕鬆應對海量異構資料來源,全面覆蓋各類資料同步場景。

   技術相容開放:相容開源生態,支援多種計算引擎並可隨心切換;相容多種儲存標準,滿足多模態資料儲存需求。

   雲中立:相容主流公有云,支援混合雲環境,打通雲壁壘,保障各雲之間的資料一致性管理,規避雲端計算廠家對企業的資料綁架。

   生態開放:對外提供資料基礎設施的各項能力,透過OpenAPI,助力實現多種大資料應用業務場景。

   全流程資料質量監控:支援ETL全流程的事前、事中、事後資料質量檢查和告警。

   一站式資料開發:覆蓋資料採集、建模、離線/實時開發、運維監控、服務開發等環節,資料開發者只需專注於業務開發。

   支援複雜排程場景:支援ETL流程多層巢狀、跨專案、跨流程依賴排程。

   DataFacts功能介紹  

  從產品功能架構圖上可以看出,底座支援CDH、EMR、MRS、CDP、HDP、DLink等大資料平臺或對應的數倉,在此基礎上,整個平臺有統一排程服務在託管所有任務的排程。

  在基礎服務之上,對整個叢集做一些管理,包括引擎的配置,如SMK引擎、FLink引擎,基於關係型資料庫,以及訊息Kafka或訊息佇列,包括檔案。

  在資料建模層面,基於數倉建設的方法論去規劃概念模型再到邏輯模型、物理模型,最終到模型和開發結合,根據固定載入策略生成對應的ETL模板,提高開發效率。

  專案空間可以對基礎配置,包括新增成員、增加/刪除、許可權管控,在開發時可以進行開發環境、測試環境、生產環境的隔離,互不影響、互不打擾,整個專案空間匯入匯出,可以在不同環境下以及物理隔離狀態下做任務的遷移。

  在資料開發層面,從資料整合、實時/離線採集,到讀取/寫入元件管理,包括採集過程中的任務監控,資料開發也是從離線/實時自動化的DAG,從這些相關方面已經引入了DataOps相關理念,包括自動化構建DAG,規範性檢查,支援很多不同計算引擎下任務型別,比如FLink、Spark等,開發的同時做SQL的查詢,驗證整個業務邏輯編寫是否正確是可以做一些資料檢索,SQL指令碼管理、查詢結果下載等。

  測試可以做到自動化測試,從測試用例設計、測試資料準備、執行、生成測試報告,在釋出過程中,從申請、稽核、釋出記錄、釋出對比到運維監控。

  從這個環節來看,是貫穿著整個資料開發全過程的,當資料開發完以後,最終還是要為下游應用提供相應的資料服務,就涉及到資料開發、API的開發、監控、安全策略的管控,再服務市場,最終提供給相關人員,透過許可權管控的人員做一些訂閱。在這個環節之上,最終資料質量怎麼樣,可以透過資料質量模組去做一些檢測。

  整個系統能夠更好地協同起來,是少不了系統管理功能的,比如監控告警,會有訊息中心去對接,比如對接電話、簡訊。審批,整個釋出的稽核、資料來源申請都會涉及到審批中心的處理,包括賬戶、使用者認證、許可權管控。以及跟後設資料治理相關的另外一個產品的整合上,都可以無縫去做。

   1、資料建模

  從資料標準出發,根據後設資料質量、資料質量做數倉的規劃,在此基礎上,很好地把建模規範起來,去建立邏輯模型,在物理化以後,到數倉裡,可以透過ETL Mapping功能,生成指令碼。

   2、資料整合

  支援20多種主流資料來源異構融合,基於CDC技術,依託斷點續傳能力,保障複雜網路情況下資料傳輸的穩定性、時效性、一致性。

  覆蓋mysql、sqlserver、oracle、postgresql、db2、hana等業務系統主流資料來源,支援實現整庫遷移、雙資料中心、資料整合分發等海量資料高速同步場景,將所有資料同步到統一的儲存計算引擎上。

   3、資料開發

  流程比較簡單,從離線來看,支援HiveSQL、SparkSQL、ImpalaSQL等任務,以拖拉拽方式設計DAG流程,配置好排程引數,從而可以觸發排程去執行任務。也可以支援SQL資料血緣解析和任務版本管理。

  實時開發,支援FLinkSQL任務和基於資源上傳的Jar任務,FlinkSQL任務可以透過模板快速生成sink和source程式碼,支援任務引數、執行引數、檢查點、TTL引數、任務並行數等排程配置。

   4、資料運維

  可以區分為離線運維、實時運維。離線運維支援重跑、錯誤重試、停止、置成功等。實時運維,支援對任務執行效能的監控。

   5、資料服務

  可以支援“嚮導配置”API的開發,無需SQL,可以快速配置API,實現對錶資料的查詢。自動生成SQL語句,資料已經能夠檢視到了,透過相應測試以後釋出上架,整個API就可以在市場被人訂閱使用、消費。同時支援出錯告警、耗時告警、限流告警等。

   6、資料質量

  質量規則,首先支援對應模板,以及可以支援自定義規則,對規則以及質量任務建立完以後做質量監控任務執行,最終生成對應資料質量報告,形成工單,去做流轉,這時候資料開發工程師拿著工單報告再去做一些資料加工。可以看到從資料同步開發在解決問題,再來觸發資料監控的任務,形成一個閉環,就是把整個過程監控到了。

   7、資料安全

  首先做到資料分級分類,這時候針對什麼樣級別的資料可以進行一些脫敏或加密,能夠很好地管控起來。針對資料許可權,為資料開發、服務開發、資料共享提供庫級、表級、欄位級等顆粒度的許可權管控。

  資料脫敏支援構建自定義敏感資料識別規則,並構建自動化的敏感資料發現任務及分佈報表,並進行遮掩、截斷、Hash等脫敏操作。

  資料加密支援各種資料加密演算法、管理加密策略。

  日誌審計可提供針對各類系統操作及資料訪問操作的日誌審計。

   DataFacts開發流程

   一站式資料開發

   基礎配置。開始之前會有一些基礎配置,比如做一些計算儲存引擎的配置,做連通性測試,以及賬號許可權設定。

   資料模型設計。邏輯模型設計,包括模型分層、所屬主題、模型資料、模型關係等資訊;物理模型設計,包括資料庫型別、表物理引數,建立的資料來源等。

   專案配置。整個資料開發過程是基於專案空間去對資源以及相應人員、許可權等資訊做邏輯隔離,這時候一定要新建立一個專案空間。

   ETL工程開發。要開發實時任務,就可以選擇實時任務建立,支援FLinkSQL等方式,建立完以後,可以在測試工作裡做任務提交、任務執行,再做一些日誌檢視。開發完以後,可以把任務拖拽到皮膚裡生成對應的DAG,再做一些引數的配置,比如排程觸發的時間或基於事件的觸發,或整個排程週期有效期都可以在這裡做一些配置的。以及可以引用外部資源,包括自定義函式、設定一些變數。

   ETL釋出。從測試環境把整個DAG或資料任務釋出到生產環境上去,就不能再做任何修改了。

   ETL運維。在運維模組對生產環境任務做運維、監控、錯誤重試、補資料、流程管理、告警配置等自動化運維動作。

   資料服務開發。首先會新建API,在API裡自定義一些SQL,最終釋出完以後做一些上架、稽核以及許可權管控,最終被下游訂閱、使用。

   資料平臺案例實踐

   例如,線下門店零售企業,痛點比較深刻:系統差異問題:如庫存口徑、營業目標、分類彙總、演算法邏輯、流程規範等問題待解決; 業財差異問題:如自營批發劃分、庫存分類差異、O2O銷售等; 電商差異問題:不可共享庫存、產品主資料差異、銷售差異、庫存口徑差異等。

   我們想在原來數倉基礎上建立一個資料平臺,有幾個技術動因:

   資料口徑不一:業務和財務管理視角不一樣,雙方對資料理解有衝突,這也是很多企業經常碰到的共性問題。

   部分資料維度缺失:資料分析有的從業務出發,有的財務視角的資料,資料缺乏統一儲存,管理,利用,難以業務財務綜合分析。

   原有技術架構效能不足:原來是基於Oracle搭建資料倉儲,所以在資料計算能力上肯定很難支撐業務快速迭代的。

   滴普解決方案:

   資料資產標準化:對現有業務邏輯、系統邏輯的梳理,實現統一資料檢視。

   資料賦能業務:基於統一資料平臺,構建資料模型和資料分析,統一可靠地資料來源賦能業務。

   資料視覺化管理:透過使用DataFacts平臺作為資料管理抓手進行資料安全管理、資料服務管理等管理動作。

   給客戶帶來的價值:

   資料平臺算力提升:大資料叢集以分散式+高可用部署直接提高了底座的健壯性;實時資料計算採用Flink 等最新技術保證了算力進一步提升。

   服務響應提升:透過使用DataFacts平臺,使用者可以直接瞭解當前資料現狀,快速定位需求,這種以終為始的響應模式保證響應效率進一步提升。

   業務標準規範化提升:專案過程中制定的資料開發規範、資料建模規範、資料維護規範等標準規範,有利於保證後期資料運維可以持續性的提升。

   資料管理能力成熟度提升:透過使用DataFacts平臺作為資料管理抓手進行資料安全管理、資料服務管理等管理動作,有利於保質保量的達成統一資料、統一報表、統一大算的目標。

  底層對應一些業務資料來源,從採集層面來說都是基於CDC技術去採集的,比如監控MySQL的日誌,把資料釋出到Kafka,還有一部分資料做了分流,當時還做了基於Kafka實時數倉,最終做一些實時資料計算。

  另外一部分是資料進入到了基於Kudu-ODS層,然後把資料在零點時以T+1站時效同步到Hive這邊來,把實時資料轉成離線資料,基於數倉建模方法論,把資料提供給下游相關資料應用,也有一些庫表連線,因為這是根據不同的下游應用支援的能力去決策的。

  整個平臺先進性,首先可以基於實時監控做一體化狀態任務的監控。可以做安全管理,以及雲原生容器產品可以降低部署運維難度,整個成本也做了比較大的縮減。基於FLink打造了實時數倉,為資料分析提高時效。

   再例如,某鞋服零售集團基於FastData數倉一體架構最佳化了成本、效能和效率  

  FastData資料平臺基礎底座包括流批一體資料分析引擎和一站式資料治理資料服務平臺,在上層做了一些應用分析,最終實現了預測場景,以及對企業的指標,包括標籤,去做升級改造。

  資料來源比較多,有結構化資料、半結構化資料、非結構化資料,整個結構化資料採集用DataFacts資料整合模組DCT,把資料從各個資料來源,以實時任務的方式寫到Kafka,再透過DCT或透過FLINK去消費,再入到DLink。

  還有非結構化資料入湖,就是把一些音影片、檔案、圖片入到物件儲存裡,對於資料格式非常開放。

  對於計算層,資料入湖、流處理、批處理、資料加工,都是基於流批一體方式實現。

  在分析層面,可以實現聯邦查詢,包括物化檢視,在Hive層面,Spark等,也做到很好的相容,也可以做資源排程管理。

  在資料開發層面,從資料開發模型的建立,以及血緣生成,還有資料服務提供,這是基於DataFacts的,在DLink這邊,機器查詢、聯邦查詢,以及提供實時資料集,透過DLink。

  在最上層,資料API指標管理是透過DataSense提供,包括業務字典,是以低程式碼方式去實現的。

  資料來源做一些資料整合,寫到Kafka,最終寫到DLink裡去,再到資料組織、編排,最終再到資料開發,再提供對應資料,給到下游應用,去做一些分析或BI或報表展現。

  涉及到引擎也比較多,首先有FLink流處理引起,也有Spark批處理引擎,還有HiveSQL,原來基於CDH6.0.0,有HiveSQL、FLinkSQL等任務,在平臺之上很好地相容了剛剛說的幾種任務型別。

  開發過程中首先做一些資料採集、傳輸,做一些資料加工清洗,再到資料服務,以及資料治理相關能力的提供,以及提供一些資料機器查詢,包括做一些視覺化的操作。

  涉及到的產品有DataFacts資料整合模組,有DCT等三個產品。  

  對於結構化資料入湖:

  實時資料入湖就是從不同的業務資料庫,透過DCT採集以後寫到Kafka,這裡還做了一些資料分流,為下游提供實時計算的,這時候透過FLink去消費,寫到DLink裡面去,最終可以供FLink以及HiveSQL做資料查詢或加工。

  離線的資料入湖,主要實現整庫,透過DCT把整庫資料同步寫入到Hive裡,透過SparkSQL寫到DLink裡去,一般更多是做歷史資料初始化。

  實時整庫入湖,這也是為了縮減鏈路,可以針對一個庫下面所有的票還是多張表,都可以做這樣入湖的。

  資料歸檔,根據對應企業業務現狀,對於MySQL業務系統資料庫到了一定資料儲存的量以及時間、週期,會把資料做一些遷移,就會有一些資料被遷移到其他地方去儲存起來,對應的業務系統裡的資料庫的資料就會做一些刪除,做一些清理。這時候這個資料也會被DCT監控到,最終寫到Kafka,但實際上這個資料在資料湖裡不應該被刪掉的,所以就會有同步的機制去做對應的處理。

  實時採集任務遷移,因為原來一套架構也是比較經典的架構,把資料寫到Kafka,同時制定了一些方案的策略。

  在做一些資料初始化時,首先肯定有一些歷史資料的初始化,對增量資料做一些銜接,這時候要很好地把控對應的時間點,比較標準的操作方案是首先啟動實時DCT任務,啟動時間T1,資料暫存在Kafka,且暫不消費;再啟動離線任務,啟動時間T2,初始化完成以後,時間節點是T3;離線任務完成後,T4的時間,實時任務從T2時間點開始消費Kafka。

  湖上建倉

  在湖上建倉時,資料分層都在DLink的儲存上。首先是資料入湖到ODS層,支援實時與離線,詳見“資料入湖”章節;DWD、DWS、DWT、ADS層都在DataFacts上完成,並支援資料治理能力。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28285180/viewspace-2928677/,如需轉載,請註明出處,否則將追究法律責任。

相關文章