TiDB 在攜程 | 實時標簽處理平臺優(yōu)化實踐
攜程是全球領先的一站式旅行平臺,旗下?lián)碛袛y程旅行網(wǎng)、去哪兒網(wǎng)、Skyscanner 等品牌。攜程旅行網(wǎng)向超過 9000 萬會員提供酒店預訂、酒店點評及特價酒店查詢、機票預訂、飛機票查詢、時刻表、票價查詢、航班查詢等服務。
在十億級別數(shù)據(jù)量下,攜程借助 TiDB HTAP 能力提升業(yè)務運營的效率,應用場景主要包括國際業(yè)務 CDP 平臺、酒店結算、風控等。
實時標簽處理平臺面臨挑戰(zhàn)
在國際業(yè)務上,由于面臨的市場多,產品和業(yè)務復雜多樣,投放渠道多,引流費用高,因此需要對業(yè)務和產品做出更精細化的管理和優(yōu)化,滿足市場投放和運營需要,降低整體成本,提高運營效率與轉化率。為此,攜程專門研發(fā)了國際業(yè)務動態(tài)實時標簽化處理平臺(以下簡稱 CDP )。
攜程旅行的數(shù)據(jù)具有來源廣泛、形式多樣、離線數(shù)據(jù)處理與在線數(shù)據(jù)處理兼有等特點,如何通過系統(tǒng)對這些數(shù)據(jù)進行采集、管理、加工,形成滿足業(yè)務系統(tǒng)、運營、市場需求的數(shù)據(jù)和標簽。處理好的數(shù)據(jù)需要立刻運用到業(yè)務系統(tǒng)、EMD、PUSH 等使用場景中,對數(shù)據(jù)處理系統(tǒng)的時效性、準確性、穩(wěn)定性以及靈活性提出了更高要求。
為了解決以上問題,CDP 系統(tǒng)必須提升數(shù)據(jù)處理能力。過去傳統(tǒng)方案是通過數(shù)倉進行 T+1 計算,再導入 ES 集群存儲,前端通過傳入查詢條件,組裝 ES 查詢條件查詢符合條件的數(shù)據(jù)。攜程已經(jīng)上線的標簽有上百個,有查詢使用的超過 50% ,由于該方案是離線計算,所以數(shù)據(jù)時效性差,依賴底層離線平臺計算和 ES 索引,查詢響應速度較慢。
TiDB HTAP 雙引擎
滿足實時觸發(fā)、持久化儲存雙場景需求
CDP 希望在數(shù)據(jù)處理的過程中能提升數(shù)據(jù)處理時效性,同時滿足業(yè)務靈活性的要求,對于數(shù)據(jù)處理邏輯、數(shù)據(jù)更新邏輯,可以通過系統(tǒng)動態(tài)配置規(guī)則的方式來消費消息數(shù)據(jù)(Kafka 或 QMQ)動態(tài)更新標簽,業(yè)務層只需關心數(shù)據(jù)篩選邏輯及條件查詢。
根據(jù)業(yè)務需求,業(yè)務數(shù)據(jù)標簽篩選主要分為兩大場景:
· 實時觸發(fā)場景。根據(jù)業(yè)務需要,配置動態(tài)規(guī)則,實時訂閱業(yè)務系統(tǒng)的變更消息,篩選出滿足動態(tài)規(guī)則條件的數(shù)據(jù),通過消息的方式推送到下游業(yè)務方;
· 標簽持久化場景。將業(yè)務系統(tǒng)的實時業(yè)務變更消息按照業(yè)務需要,加工成業(yè)務相關的特征數(shù)據(jù),持久化存儲到存儲引擎。業(yè)務根據(jù)需要組裝查詢條件查詢引擎數(shù)據(jù),主要有 OLAP (分析類)與 OLTP (在線查詢)兩大類查詢。
基于以上需求,CDP 流式數(shù)據(jù)采用類 Kappa 架構,標簽持久化采用類 Lambda 架構,如下圖所示:
TiDB 在攜程 | 實時標簽處理平臺優(yōu)化實踐
圖:CDP 系統(tǒng)架構
其中,標簽持久化場景需要解決業(yè)務標簽的持久化存儲、更新、查詢服務,攜程采用了 TiDB 來存儲業(yè)務持久化的標簽,并采用實時觸發(fā)場景中的動態(tài)規(guī)則配置方式消費業(yè)務系統(tǒng)數(shù)據(jù)變更消息,保證業(yè)務持久化標簽的時效性,通過 TiDB 對 OLTP 和 OLAP 不同場景查詢特性的支持,來滿足不同業(yè)務場景中訪問業(yè)務特征數(shù)據(jù)的需要。
系統(tǒng)借鑒了 Lambda 數(shù)據(jù)處理架構的思想,新增數(shù)據(jù)根據(jù)來源不同分別發(fā)送到不同的通道中,歷史全量數(shù)據(jù)通過數(shù)據(jù)批處理引擎(如 Spark)轉換完,批量寫入到數(shù)據(jù)持久化存儲引擎 TiDB 中。增量數(shù)據(jù)業(yè)務應用以消息形式發(fā)送到 Kafka 或 QMQ 消息隊列,將數(shù)據(jù)按照標簽持久化的邏輯規(guī)則處理完成,增量寫入到持久化存儲引擎 TiDB,以此解決數(shù)據(jù)的時效性問題。
TiDB 同時具有兩大持久化存儲方式,一種是行存 TiKV ,可以支持 OLTP 場景,另一種是列存 TiFlash ,可以支持 OLAP 場景。TiDB 數(shù)據(jù)存儲內部自動解決這兩個引擎的數(shù)據(jù)同步問題,客戶端查詢根據(jù)自身需要選擇查詢方式。同時,TiDB 還能保障兩種方式有著良好的隔離性,并兼顧數(shù)據(jù)強一致性,出色地解決了 HTAP 場景的隔離性及列存同步問題。
目前,CDP 已經(jīng)與攜程各個業(yè)務系統(tǒng)進行深度整合打通,為國際業(yè)務增長提供業(yè)務特征標簽庫的數(shù)據(jù)與服務支持。
TiDB 應用價值
· HTAP 混合負載
完美支撐 OLTP + OLAP 混合負載,簡化 IT 系統(tǒng)架構,大幅提升業(yè)務的實時查詢性能。
· 水平彈性擴展
擺脫了 MySQL 分庫分表難題,幫助攜程隨時根據(jù)業(yè)務增長情況進行水平彈性擴展。