Categories
程式開發

阿里1688實時數據工程實踐


導讀:在天貓、淘寶網購過程中,商品的推薦與廣告的前端展示是怎樣的?兩者的底層數據服務又是怎樣構建的?今天跟大家講述面向阿里1688業務的實時數據工程實踐。

本次分享主要分為三部分:首先講解實時數據工程實踐的意義;然後介紹中台體系,因為中台的基礎非常完善,所以面向業務時,工程實踐特別高效、低成本;最後通過實際案例讓大家深刻了解實時數據工程。

01 實時數據工程

阿里1688實時數據工程實踐 1

1688是一個電商網站,每天會有千萬級的訪問流量,百萬級的訂單流量,每天能有數十億成交額。

一個網站想要發展,最關注的肯定就是買家數,營收等一些指標;如果涉及到目標,就離不開匹配效率、市場機制、商業化 ( 如廣告投放等 )。

支撐這些目標的通常是算法:

❶ 針對匹配效率,有實時個性化搜索,推薦算法的開發;

❷ 針對市場機制,有業務需求方的實時調控策略;

❸ 針對商業化,有搜索推薦即廣告物料的實時上下架調整。

算法模型的底層就是實時特徵工程,分為兩部分:

❶ 用戶行為數據工程體系。主要作用在場景中,通過捕捉用戶的行為信息,構建用戶的數據特徵體系,呈現更符合客戶價值的信息。

❷ 構建業務與貨物的實時系統。由原先在搜索推薦中離線計算,進行實時化提速,由原來的 T+1 天改進到現在 1h、1min 甚至秒級的數據計算響應。

實時數據工程所實現的用戶行為數據工程體系、業務實時化建設依賴於阿里巴巴非常完善的中台基礎體系。

02 中台基礎

阿里1688實時數據工程實踐 2

簡單介紹下中台基礎,主要分為:在線服務體系、實時計算引擎與離線數據同步工具、數據存儲。

在線服務體系

❶ 搜索引擎 HA3,是阿里巴巴搜索團隊開發的搜索引擎平台,它為阿里集團包括1688、淘寶、天貓在內的核心業務以及各垂類業務提供搜索服務支持。

❷ 推薦引擎 BE(BasicEngine ),包含搜索 Query 的各種召回 ( 如 item2item,behavior2item ) 及一些簡單的數據處理邏輯如合併、關聯、過濾、排序等。

❸ 在線打分系統 RTP,在搜索與推薦之上,支持業務中深度模型的在線打分服務。

❹ igraph 圖索引及查詢系統,存儲用戶的行為信息。在實踐中,還會用來存儲如 kv、kkv 結構的服務化數據。

實時計算引擎與離線數據同步工具

❶ 阿里內部使用較多的 Blink。大家可以認為是 Flink 的升級版,功能更加完善,也更加強大,甚至已經成為了阿里巴巴實時計算的主流引擎,下面將要講的案例大都是以 Blink 為基礎實現的。

❷ 異構數據源之間的同步工具 DataX。即通過底層的 ODPS ( Open Data Processing Service ) 服務將不同數據源的數據進行同步。

數據存儲

❶ OPDS 開放數據處理服務,基於阿里飛天分佈式平台,支撐 GB/TB/PB 級的數據計算服務。

❷ Tddl 是分錶分庫的一個中間件,可以認為是類似於 MySQL 的一種工具,在其上進行封裝後,分錶分庫可以橫向縱向的無限擴展。

03 工程實踐

下面將面向業務類型,進行案例講解,一是系統業務數據實時化的案例;二是根據用戶行為的實時數據服務。

  1. 系統業務數據實時化

任務:因為搜索推薦以及促銷活動商品池更新汰換,將導致商品的各種信息發生變化。從原始數據源中的數據實時同步更新到服務引擎中,就顯得非常有必要。

案例1:商品統計數據實時化

阿里1688實時數據工程實踐 3

要求:商品的成交金額、買家數、其他算法指標在線上發生變化時候,就能在線上的搜索引擎中實時顯示出來。

❶ 針對數據準確性不同要求,設計了差異化的解決方案:

賣家或者買家在前端頁面展示出來的數據是非常精準的,這個用中間的數據庫做轉存,然後再進入搜索引擎。

在線打分、商品排序階段,一些算法的因子可能存在時效性的誤差,我們是實時計算算好直接進入搜索引擎,更加高效,更加輕量,延遲更低,並發度可以更多。

❷ 全量+增量互補的方案

上面是實時的解決方案,對於 T+1 級別的數據,要把 T-n->T 天的數據做一個全量的計算,再進到搜索引擎中,因為每天的搜索引擎是做一個全量更新的。

案例2:推薦商品的實時更新汰換

阿里1688實時數據工程實踐 4

背景:在1688網站,每年要舉行3次S級的大促,類似於天貓淘寶的雙11大促,大促會場一直是買家流量的主要承接場景,是大促的主要陣地。

原來的時候,算法是通過離線進行召回的,存在召回能力不足,效果不好的問題。

改進為算法實時召回,並且運營可以配置召回及打分方式,實現大促會場商品的實時更新汰換和算法能力結合,是運營的重要抓手,也對大促會場的匹配效率起到關鍵作用。

案例3:廣告引擎和推薦引擎之間的數據實時同步

阿里1688實時數據工程實踐 5

背景:2018年下半年,推薦商業化:當時廣告引擎和推薦引擎是異構的,召回的方式完全不一樣,廣告走的是搜索的邏輯,根據Query 詞;而推薦根據用戶行為、或者冷啟動進行召回。

現在將廣告的數據同步到推薦引擎中,將千萬級別的全量廣告商品集進行精品篩選,得到百萬級別的精品商品集。使用 Blink batch 將這些數據每5分鐘全量更新一次,並按照商品投放計劃消息把數據更新給推薦廣告引擎。

  1. 實時數據服務

阿里1688實時數據工程實踐 6

實時數據服務就是將用戶行為數據從埋點收集到最終應用的整個過程,構成實時數據服務的閉環體系。利用用戶的歷史行為數據,進行加工、計算、孵化,作用到每一個算法需要介入的場景中,比如實時搜索、個性化推薦、會場場景等。

阿里1688實時數據工程實踐 7

首先,通過場景的規範埋點進行用戶行為數據的採集,得到原始數據存儲 TT 流,這些是阿里日誌中台做的工作。

其次,將數據通過 Blink 進行打標籤,這裡是通用標籤,跟業務無關。然後,根據業務場景對數據進行多維度的聚合加工,如用戶維度、商品維度、場景維度等。最後,建立統一的服務層,對外提供接口,將數據應用到業務場景中。

阿里1688實時數據工程實踐 8

最後搭建的實時數據服務解析如上圖所示:

❶ 當用戶進入網站後,通過用戶標識,用戶的點擊,收藏,加購,支付的數據將會實時進入到實時數據服務層。

❷ 用戶在瀏覽商品的時候,會對商品做曝光過濾處理,因為不希望用戶每次進入網站都看到相同的東西,而是根據算法將商品展示的序列進行優化。

❸ 每個商品,根據商品的 id 可以在後台得到商品實時的 CTR/CVR 數據,由中台基礎的 Blink 提供實時計算。

❹ 根據商品 id,可以實時查詢某種商品的成交額,支持批量查詢。

❺ 針對於新形態的挑貨與直播,通過 feeds id 可以得到 feeds 的實時 CTR/CVR。

❻ 在大促會場中,可以通過場景標識+分桶標識,快速得到對應場景的一些報表數據 ( 曝光、點擊、成交、相應的 uv 等 )。

❼ 用戶標識+場景標識,根據得到的用戶在指定場景下的統計數據,可用於實時化的個性化分流、推薦等。

❽ 場景的標識,得到場景的總體統計,可以用於流量分配機制的完善。

作者介紹

半醒

阿里巴巴 | 技術專家

本文來自 DataFunTalk

原文鏈接

https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247497011&idx=1&sn=d280463d5c9e7cad581433deca294e32&chksm=fbd7475fcca0ce4921e9e96544286dc2dfaf4a184009c8f85e362e6eba0c859f94b9953e42fa&scene=27#wechat_redirect