簡介: 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也將持續提升實時研發的能力和體驗,幫助企業降低實時研發的門檻,挖掘更多的場景,獲得實時數據帶來的業務價值!
本文為阿里雲原創內容,未經允許不得轉載。