概要:剛剛結束的2020天貓雙11中,MaxCompute互動式分析(Hologres)+實時計算Flink搭建的雲原生實時數倉首次在核心資料場景落地,為大資料平台創下一項新紀錄。借此之際,我們将陸續推出雲原生實時數倉雙11實戰系列内容,本篇将重點介紹Hologres在阿裡巴巴淘寶營銷活動分析場景的最佳實踐,揭秘Flink+Hologres流批一體首次落地阿裡雙11營銷分析大屏背後的技術考驗。
一、背景介紹
在淘系業務營運中,大促是業務營運和使用者增長中非常重要的場景,而營銷活動分析産品作為大促期間用來服務決策、指導營運的核心資料産品,覆寫活動前、中、後全鍊路的分析,其中需要滿足不同角色小二在不同階段下,對資料時效性和資料靈活性的不同要求。
老版營銷活動分析是基于正常的實時離線資料體系&FW的産品架構,在之前的各類大大小小的活動中,也暴露了比較多的問題,其中核心的問題可以歸納為三類:
- 實時和離線資料不一緻:相同口徑的資料實時和離線不一緻,包括資料邏輯口徑不統一、資料接口不統一,由于實時和離線資料開發割裂(開發人員和接口),不僅僅增加了整體資料的運維成本,同時産品搭建層面的負擔也大幅度提升。
- 維護成本高:随着業務量的增加,原有資料庫不能快速、靈活的支援複雜且多變的應用場景。正常的HBase、MySQL、ADB資料庫,都隻能單點滿足海量資料、高并發存儲點查、OLAP查詢,是以面對極其複雜的業務,需要依賴多個資料庫,整體維護成本和依賴成本會非常高。
- 擴充性差:在FW架構下的産品搭建邏輯複雜度高、可擴充性都比較差,在活動期間維護的成本非常大
是以,如何能夠快速應對頻繁變動的業務訴求,以及更高效的處理活動期間的資料問題變得越來越重要,更新的新一代營銷活動分析架構因而需要滿足以下幾個優點:
1. 實時數倉與離線數倉能夠模型統一(實時離線邏輯統一)、接口統一(資料存儲、取數統一),真正做到流批一體
2. 需要有更強大的數倉,既能夠滿足海量資料的并發寫入查詢,還能夠滿足業務的及時查詢功能
3. 簡化現有的産品搭建邏輯、降低産品實作複雜度
基于上訴背景,我們需要重構目前架構并尋找另外的替代産品來解決業務痛點。經過長時間的調用和嘗試,最終我們選擇了基于實時計算Flink+Hologres+FBI(阿裡内部的一款可視化分析工具)的技術方案來實作天貓營銷活動分析的架構重構。
二、 流批一體技術方案
通過深度剖析業務對資料的要求,以及多方位資料模型探索和數倉的調研,最終确定了營銷活動分析産品重構的整體技術架構,如下圖所示,其中的核心要點有:
- 通過流批一體架構更新,實作了流批SQL邏輯&計算引擎層面統一
- 通過Hologres實作了資料存儲和查詢的統一
- 利用FBI産品能力,在降低搭建成本的同時滿足業務的高靈活性,同時滿足不同角色對于報表的需求

**
下面,我們将詳細介紹整個技術方案中核心的幾大技術方案:流批一體、Hologres、FBI
1. 流批一體技術架構
傳統數倉架構圖如下圖所示,傳統數倉架構核心問題:
- 流批間的存儲層割裂,叢集、表、字段都是分開的,導緻應用層對接時需要寫不同的取數邏輯。
- 流批間的處理邏輯不能複用,SQL标準不一樣,計算引擎不一樣,導緻實時和離線需要分别開發,其實很多情況下,邏輯大同小異,但系統之前不能靈活轉換,導緻工作量重複
- 計算層叢集分開,實時和離線對資源的使用時間段高峰不一樣,導緻資源使用率不夠高,波峰波谷非常明顯

流批一體數倉架構圖如下圖所示,更新後的架構主要有以下核心點需要關注:
- 首先,數倉DWD層雖然在存儲媒體上不同,但需要保證資料模型的等價,然後進行邏輯表封裝(一個邏輯表映射兩個實體表,即實時DWD和離線DWD),資料計算代碼的撰寫都是基于該邏輯表開發
- 其次,基于邏輯表的代碼開發、流、批計算模式的個性化配置、以及不同的排程政策等,需要有開發平台(Dataphin流批一體開發平台)作為支撐,形成便捷的開發、運維一體化
- 最後,基于資料模組化規範的存儲層統一,不僅是模型規範統一,還是存儲媒體的統一,做到了無縫的銜接
Hologres+Flink流批一體首次落地4982億背後的營銷分析大屏一、背景介紹二、 流批一體技術方案三、測試端的保駕護航四、業務回報&價值五、未來展望
今年雙11,實時計算Flink處理的流量洪峰創紀錄地達到了每秒40億條的記錄,資料體量也達到了驚人的每秒7TB,基于Flink的流批一體資料應用在營銷活動分析場景中嶄露頭角,并在穩定性、性能和效率方面都經受住了嚴苛的生産考驗
整體Flink流和Flink 批任務在活動期間都表現了極強的穩定性,全程0鍊路容量、機器單點、網絡帶寬等問題的發生
2. Hologres流批一體落地
流批一體資料架構實作了整體的資料層面的統一,還需要選用一款産品讓整體的存儲統一,這款産品需要即支援高并發寫入,又能夠滿足及時查詢,同時還能夠支援OLAP分析。
在老版本的架構中每個頁面子產品會涉及到一個或多個資料庫的資料查詢,如MySQL、HBase、ADB3.0(老版本HybridDB)等。由于HBase的高并發寫入、高性能點查等特性,是以大多數實時資料就會放在Hbase中;而由于MySQL表管理便捷、查詢簡易等好處,維表資料、離線資料通常會選擇存放在其中;另外,産品的一些子產品涉及到的資料,具有資料量小、次元多等特征(如營銷玩法資料),則會選擇ADB作為OLAP多元分析的資料庫。如此,就會存在兩個痛點:實時資料與離線資料的割裂、多資料庫多執行個體的雜亂管理。
新版營銷活動分析産品的建設,一個目标是要做到存儲統一,降低運維成本和提高研發效能;另外一個目标是高性能、高穩定、低成本。
我們通過與多方位的産品對标之後,選用了Hologres作為整個營銷活動分析的統一産品。Hologres作為一款相容PostgreSQL 11協定的一站式實時數倉,與大資料生态無縫打通,支援PB級資料高并發、低延時的分析處理,可以輕松而經濟地使用現有BI工具對資料進行多元分析透視和業務探索,在這樣複雜的業務場景中Hologres的優勢就表現得極為突出了。
通過對整體營銷活動分析個子產品的深度分析,以及結合業務側對資料時效性的要求,整體将營銷活動分析的幾大子產品的資料制定了具體的實時鍊路方案:
- 活動直播、預售、加購、流量監控等核心子產品,我們選用了Hologres的實時點查能力,
- 面對複雜多變的營銷玩法場景,我們選用了Hologres的OLAP即時查詢能力
針對營銷活動分析需要的點查能力和OLAP分析能力,天貓營銷活動分析分别建了dt-camp和dt-camp-olap庫,其中dt_camp點查庫由于需要将活動期間的一些曆史資料長期存放用來做活動的對比,整體資料量級在近40TB;營銷玩法的OLAP庫中,存放的是玩法的一些明細資料,整體資料量級在近百TB,由于營銷玩法對整體資料的準确度要求非常高,是以沒有采用有損精度的查詢方式,對整體數倉的查詢性能提出了更高的要求。
為了提升Hologres的整體性能,針對營銷活動分析數倉主要做了一下幾類優化政策:
- 設定distribution key:對于count(distinct user_id)的情況将user_id設定為distribution key在Hologres中每一個shard做count distinct,避免大量的資料shuffle,大大提升查詢性能。
- 盡量減少count distinct 次數:通過多層group by 操作轉換SQL減少count distinct成本
- shard prunning:在一些場景中,查詢會指定某個表的pk中的一些key進行查詢,如果将這些場景的key組合設定為distribution key,可以在處理查詢的時候就确定本次查詢會命中那幾個shard,減少RPC請求數,對于高QPS場景至關重要
- 生成最優的plan:營銷活動分析有基于彙總資料的點查或者範圍查詢,有基于原始資料的OLAP查詢,還有單表的聚合之後取topn的查詢,對于不同的查詢類型,Hologres能夠根據收集的統計資訊,生成最優的執行計劃,保證查詢的QPS和Latency
- 寫入優化:營銷活動分析的寫入都是基于列存表UPDATE操作,該操作在hologres中會首先根據指定的pk找到對應的uniqueid,然後根據uniqueid找到對應的記錄标記删除,然後再查詢一條新紀錄,這種情況如果能夠設定一個遞增的segment key,查詢的時候就可以根據segment key快速定位到檔案,提升根據pk定位到記錄的速度,提升寫入性能,營銷活動分析系統壓測時寫入峰值可以達到800萬每秒的更新
- 小檔案合并:某些寫入不是很頻繁的表因為一段時間更新的key比較固定,這導緻memory table flush的時候是一個比較小的檔案,而Hologres預設的compaction政策并沒有對這些檔案做compaction,導緻存在比較多的小檔案,通過深入優化compaction參數,增加compaction的頻率,減少小檔案,對于查詢性能有較明顯的提升
Hologres在雙十一期間表現,點查場景的寫入峰值達幾十萬每秒,服務能力幾百萬每秒,OLAP寫入峰值400萬每秒,服務能力500萬每秒。同時單點查詢&OLAP查詢幾乎都能夠滿足單條查詢小于ms的查詢比例高達99.7%以上,是以在整個活動期間,Hologres整體表現非常平穩,能夠很好的同時支援快速點查和快速OLAP分析。
3. FBI分析大屏
FBI作為阿裡生态内的首選資料可視化平台,即能快速支援搭建各類報表進行資料分析,也能支援多種資料集的快速接入與擴充,還有支援各種分析型資料産品建設的進階功能【産品搭建】。

在FBI産品搭建的核心流程中,可以通過4個核心功能大幅降低搭建成本:
1)實時離線一體的“實時小時分鐘模型”,自動實作實時資料的精确趨勢和對比
針對營銷活動定義的批流一體的底層資料,為了滿足使用者分析實時資料,實時對比,小時對比的靈活性,FBI抽象出一套實時離線一體的标準資料模型,建立該模型後就可以實作實時資料的精确對比,趨勢分析自動路由分鐘表,小時趨勢直接路由到小時表的能力。
2)FBI原創的FAX函數,極簡定義輸出各種複雜名額
針對複雜的名額:如通道占比,類目占比,同比貢獻度,活動累計成交額,上個版本中均是用sql套sql進行定義,不僅導緻SQL長度保障,同時産品的穩定性和可維護性都大大降低。為了解決這類問題,FBI建構了一套易于學習和了解的分析DSL,名為 FAX函數(同比差額、貢獻率、活動累計等20+分析函數),簡單的一行語句可以定義出營銷活動分析中用到的各種複雜名額。
3)通過分析能力配置化和專有邏輯插件化,大幅節約頁面建構時間
産品頁面建構是一個非常核心的環節,如何節約使用者的配置,FBI的方法就是:
a、通用分析能力配置化:對于最常用到的交叉表、活動對比,日期變量傳參等分析場景,抽象更新為簡單的配置項,即可完成相應的同期對比和同比差額等分析。
b、專有邏輯插件化:對于活動參數,顯示隐藏,結果排序等作用于區塊的定制能力,可以通過資料插件的方式覆寫。
4、打造沉澱FBI的高保障體系,更新了釋出管控,監控預警,變更提示等,支援1-5-10

三、測試端的保駕護航
為了進一步保障營銷活動分析産品品質,測試端從明細->彙總->産品端都做了嚴格的資料比對和校驗,同時針對大促的核心資料,進行了全方位的監控

在活動期間測試巡檢功能大大提升了主動發現資料問題的能力,以及及時發現核心問題的能力,大大的提升了活動期間整個資料産品的品質和穩定性
四、業務回報&價值
整個雙十一期間,基于實時計算Flink+Hologres流批一體的營銷活動分析産品不僅支援了天貓事業群上千+小二的人均上百PV高頻通路,更實作了0 P1/P2故障的目标,同時整個産品在活動期間表現了相比往年更有優勢的幾大方面:
- 豐富:實時資料在營銷活動分析産品中大規模鋪開,核心次元可以down到活動商品、商家标簽分層等多個次元,同時加購和預售都新增了商家、商品次元的實時資料,更加友好的支援了業務側進行商家的BD
- 穩定:基于Hologres持續高穩定的輸出,整體雙十一期間不論是實時資料寫入、還是資料的讀取都表現出了極強的穩定性;同時工程端實時監控使用者通路和資料響應效率,實時分析解決業務問題;産品巡檢涵蓋了産品的核心資料,進一步的保障了整個産品的穩定性
- 高效:流批技術的應用,以及Hologres的統一對接,不僅大幅度的提升了活動期間的需求接入效率(今年雙十一期間整體需求承接能力是去年的3倍),同時整體的提升了問題回報和解決的時效(相比以往活動提升了3-4倍)
五、未來展望
雖然已經經曆了一次大促大考驗,但是技術的探索永無止境,我們需要不斷的完善來應對更加複雜的業務場景:
1)Dataphin流批一體開發平台進一步完善,減少人工幹預成本,同時進一步保證資料品質
2)Hologres資源隔離,讀寫資源隔離,更好地保證查詢的SLA;打通Hologres與MaxCompute,支援中繼資料的互通,為産品中繼資料提供更高的保障;動态擴容,能夠靈活應對峰值及日常的業務需要。
3)FBI産品工具,能夠提升産品版本管理功能,同一頁面支援多人編輯不覆寫,更加高效的支援産品搭建