【產品動態】解讀Dataphin流批一體的實時研發
簡介:Dataphin作為一款企業級智慧資料構建與管理產品,具備全鏈路實時研發能力,從2019年開始就支撐可集團天貓雙11的實時計算需求,文章將詳細介紹Dataphin實時計算的能力。
背景
每當雙11全球購物狂歡節鐘聲響起,上千萬使用者湧入天貓、淘寶,流暢的購物體驗背後是阿里工程師用技術打造出的營地,支撐了每年雙11所帶來的資料洪峰。2020年11月1日至11月12日0:00,天貓“雙11”累計總交易額達4982億元,物流訂單總量達到23.21億單。這一切的背後都離不開實時計算技術。
Dataphin作為一款企業級智慧資料構建與管理產品,具備全鏈路實時研發能力,從2019年開始支撐集團天貓雙11的實時計算需求。就以下文介紹Dataphin實時計算的能力。
傳統的數倉架構
在數倉建設過程中,一般來說都是先建設離線數倉,同時圍繞著離線資料構建應用。然後隨著業務的發展或者體驗的優化,再建設實時計算的鏈路去提升資料的時效性。
在這個過程中相似的程式碼寫兩遍就難以避免,還會出現實時和離線口徑不一致,分別維護成本增加等各種各樣的問題。
傳統的數倉架構流與批從儲存計算中分離帶來以下的問題:
- 效率問題:流批底層資料模型不一致,導致應用層做大量的拼接邏輯(同比、環比、二次加工等),搭建效率低且容易出錯
- 質量問題:一個業務邏輯,兩個引擎兩套程式碼,SQL邏輯不能複用,資料一致性和質量問題難以保證
- 成本問題:
- 流批儲存系統隔離(面向不同寫入場景),提供的資料服務不一,維護成本高
- 手工建資料同步任務,開發成本/儲存成本高(兩份)
- 批處理&流處理叢集無法做到錯峰,資源利用率低
Dataphin流批一體優勢
為解決傳統數倉架構的儲存計算分離的問題,有了“流批一體”的思路:
- 流批儲存透明化,查詢邏輯完全一致,應用端接入成本大幅降低,點查/OLAP分析統一支援
- 服務層統一儲存,無需手工同步,無重複儲存
- 一套程式碼,兩種計算模式,邏輯統一,靈活切換,研發效率大幅提升
- 流批計算資源混部,資源利用率提升
Dataphin在Flink流批一體的能力之上額外提供了更多的平臺能力,如資料來源管理、元資料管理、資產血緣、資產質量控制、預編譯、除錯等能力:
- 開發生產隔離:提供開發環境和生產環境隔離,保證開發環境開發的業務程式碼和生產相互之間不干擾
- 元資料管理:各系統元件包括資料來源、元表、UDX等具備許可權控制功能,敏感型配置資訊加密保護。支援資料來源敏感欄位訪問訂閱。元表、函式、資源等全部單元化視覺化的管理,支援跨專案鑑權(欄位級)呼叫,讓使用者聚焦業務邏輯。
- 流批一體:流批儲存層的統一管理,實現模型層統一,流批程式碼統一、通過流批各自專屬配置,生產獨立有協同的額排程例項
- 研發提效:
- 提供了預編譯的能力,提供語法校驗、許可權校驗、欄位血緣提取的功能;
- 容器化除錯,支援上傳自定義資料或直接消費真實生產資料用來觀察作業執行、檢查各個節點的輸出結果
- 支援元資料檢索,作業依賴、欄位血緣的視覺化探查
- 穩定性及質量保障:
- 支援流量閾值設定,防止計算資源過度競爭,避免下游系統過載
- 支援實時元表質量監測,可配置統計趨勢監測、實時多鏈路對比、實時離線資料核對。
開發生產隔離
Dataphin支援開發生產隔離的專案,支援開發和生產雙環境的資料來源配置。這樣在開發模式下,任務就會自動使用開發資料來源和開發環境下的物理表;而當釋出到生產環境時,Datpahin則會自動切換為生產資料來源及生產環境的物理表。這個過程完全自動化,不用手動修改程式碼或配置。
元資料管理
Dataphin創造性的引入了實時元表和映象表的概念,將實時研發過程中的表進行了平臺化、資產化的統一管理,並簡化了研發,提升研發效率和體驗。
傳統實時任務研發工具需要使用者重複寫Create table建表語句,需要進行繁瑣的輸入輸出表對映等操作。實時元表將實時開發任務中所有用到的資料表進行了統一表構建與管理,統一維護了所有實時元表和相關schema資訊。開發者在開發過程中不用重複寫DDL語句;同時,也不需要進行繁雜的輸入、輸出、維表對映,採用簡單的純程式碼研發模式,簡單的SET語句及許可權申請,即可引用表資料,進行直接查詢或寫入資料,輕鬆做到一次建表,多次引用,大幅度提升研發效率和體驗。
映象表顧名思義則是用於維護離線表與實時表之間欄位的對映關係。建立映象表並提交發布後,就可以在流批一體的Flink任務中使用映象表的欄位,Datpahin會在編譯時自動對映到流表和批表上,實現一份程式碼,兩種計算,程式碼邏輯、口徑變更強一致。
流批一體的程式碼任務
除了引入實時元表與映象表,Dataphin也支援了流批一體的任務,使用Flink引擎作為統一的流批計算引擎,在一份程式碼上可同時配置流+批的任務配置,基於同一份程式碼生成不同模式下的例項。而對於流批差異化的程式碼,Dataphin也提供了不同的方式給與支援。
流批一體任務中會廣泛使用映象表,而映象表在最終使用時會翻譯為對應的流表/批表,為了適應流表/批表的多樣性(流表/批表的資料來源可能不一樣,帶來with引數中key可能不一樣;流表/批表的某些設定可能不一樣,比如batchSize等),可以利用tableHints進行流表/批表的對應。方法如下:
set project.table.${mode}.${key} --mode: 流任務:`stream` 批任務:batch
舉個例子,設定批任務的起停時間:
set project.table.batch.startTime='2020-11-11 00:00:00'; set project.table.batch.endTime='2020-11-12 00:00:00';
第二種是在Dataphin的任務配置實時和離線模式分別任務引數的方式是利用任務引數進行替換。
實時質量監控
Dataphin實時資料質量主要面向開發者,針對產品中實時產出的資料表,通過對產出結果進行資料質量分析和校驗,來保障資料的最終有效與準確。Dataphin支援統計趨勢監測、實時多鏈路對比、實時離線資料核對。
- 統計趨勢監測:趨勢監測指的是基於資料趨勢變化以及專家經驗以捕獲波動異常的監測方式;如 實時GMV的趨勢陡增有些異常
- 實時多鏈路趨勢對比:實時多鏈路指的是在實時計算的場景中,由於資料的恢復成本較高,無法快速從起點重新計算,因此需要使用多個計算鏈路,當發生計算異常時,自動/手動切換計算鏈路,是一種用資源換穩定的策略,當有重大的保障業務時,往往會採用該種類型;如每年雙十一大屏都會採用多鏈路保障。
- 實時離線核對:實時離線核對,是保障實時資料常用的一種措施,由於實時計算處於一種持續運算狀態,計算時間持久且受資源與源資料的擾動較大;離線資料在邏輯、資料複用性方面可以被更好地操作,因此,為了保障實時資料的準確性,常用離線資料與實時資料進行對比;如每年雙十一前都會使用離線資料對實時資料進行校驗;
雙十一大屏後的Dataphin
回到文章開始的天貓雙十一,瞭解了Dataphin平臺特有的能力,我們來具體拆解Dataphin為什麼能支撐天貓雙十一的實時資料大屏。
快
- Dataphin為實時提供研發、除錯、測試、運維全鏈路一站式服務,極大降低使用者開發門檻;
- 同時提供統一元資料管理,元資料僅需初始化一次,輕鬆做到一次建表,多次引用,讓開發聚焦業務邏輯,大幅度提升研發效率和體驗;
- 另外有資料研發經歷的同學都有這樣的體會,很多資料口徑都驚人的類似,甚至有些只是輸入輸出表不同,典型的場景比如主備鏈路,針對這種場景我們提供了模版研發的能力,相同邏輯封裝在模版中,差異邏輯通過模版引數體現,新任務僅需引用模版配置模版引數即可,極大提升研發效率的同時也降低了口徑維護成本。
基於以上能力,在雙十一大屏的支援上,儘管業務玩法很多,需求井噴,仍然僅以2人便支撐上百需求。
穩
Dataphin提供任務監控及資料質量監控全方位保障任務穩定,快速發現問題;基於模版的主備多鏈路在異常發生時可以秒級切換,快速止血;基於實時任務血緣,快速定位問題根因;基於除錯、測試、細粒度資源配置,快速驗證並修復,真正做到1min發現、5min定位、10min解決。
準
基於流批一體的能力,真正做到程式碼統一,口徑統一,儲存統一,資料服務介面統一,研發提效的同時,保證資料一致。
未來規劃
在即將釋出的Flink VVP(Ververica Platform)適配版本將支援新的VVR引擎,也將在未來支援開源Flink引擎已支援更多的部署環境。Dataphin也將持續提升實時研發的能力和體驗,幫助企業降低實時研發的門檻,挖掘更多的場景,獲得實時資料帶來的業務價值!
本文為阿里雲原創內容,未經允許不得轉載。