阿里1688實(shí)時(shí)數(shù)據(jù)工程實(shí)踐

導(dǎo)讀:在天貓、淘寶網(wǎng)購過程中,商品的推薦與廣告的前端展示是怎樣的?兩者的底層數(shù)據(jù)服務(wù)又是怎樣構(gòu)建的?今天跟大家講述面向阿里1688業(yè)務(wù)的實(shí)時(shí)數(shù)據(jù)工程實(shí)踐。
本次分享主要分為三部分:首先講解實(shí)時(shí)數(shù)據(jù)工程實(shí)踐的意義;然后介紹中臺(tái)體系,因?yàn)橹信_(tái)的基礎(chǔ)非常完善,所以面向業(yè)務(wù)時(shí),工程實(shí)踐特別高效、低成本;最后通過實(shí)際案例讓大家深刻了解實(shí)時(shí)數(shù)據(jù)工程。
01 實(shí)時(shí)數(shù)據(jù)工程
1688是一個(gè)電商網(wǎng)站,每天會(huì)有千萬級的訪問流量,百萬級的訂單流量,每天能有數(shù)十億成交額。
一個(gè)網(wǎng)站想要發(fā)展,最關(guān)注的肯定就是買家數(shù),營收等一些指標(biāo);如果涉及到目標(biāo),就離不開匹配效率、市場機(jī)制、商業(yè)化 ( 如廣告投放等 )。
支撐這些目標(biāo)的通常是算法:
針對匹配效率,有實(shí)時(shí)個(gè)性化搜索,推薦算法的開發(fā);
針對市場機(jī)制,有業(yè)務(wù)需求方的實(shí)時(shí)調(diào)控策略;
針對商業(yè)化,有搜索推薦即廣告物料的實(shí)時(shí)上下架調(diào)整。
算法模型的底層就是實(shí)時(shí)特征工程,分為兩部分:
用戶行為數(shù)據(jù)工程體系。主要作用在場景中,通過捕捉用戶的行為信息,構(gòu)建用戶的數(shù)據(jù)特征體系,呈現(xiàn)更符合客戶價(jià)值的信息。
構(gòu)建業(yè)務(wù)與貨物的實(shí)時(shí)系統(tǒng)。由原先在搜索推薦中離線計(jì)算,進(jìn)行實(shí)時(shí)化提速,由原來的 T+1 天改進(jìn)到現(xiàn)在 1h、1min 甚至秒級的數(shù)據(jù)計(jì)算響應(yīng)。
實(shí)時(shí)數(shù)據(jù)工程所實(shí)現(xiàn)的用戶行為數(shù)據(jù)工程體系、業(yè)務(wù)實(shí)時(shí)化建設(shè)依賴于阿里巴巴非常完善的中臺(tái)基礎(chǔ)體系。
02 中臺(tái)基礎(chǔ)
簡單介紹下中臺(tái)基礎(chǔ),主要分為:在線服務(wù)體系、實(shí)時(shí)計(jì)算引擎與離線數(shù)據(jù)同步工具、數(shù)據(jù)存儲(chǔ)。
在線服務(wù)體系:
搜索引擎 HA3,是阿里巴巴搜索團(tuán)隊(duì)開發(fā)的搜索引擎平臺(tái),它為阿里集團(tuán)包括1688、淘寶、天貓?jiān)趦?nèi)的核心業(yè)務(wù)以及各垂類業(yè)務(wù)提供搜索服務(wù)支持。
推薦引擎 BE(BasicEngine ),包含搜索 Query 的各種召回 ( 如 item2item,behavior2item ) 及一些簡單的數(shù)據(jù)處理邏輯如合并、關(guān)聯(lián)、過濾、排序等。
在線打分系統(tǒng) RTP,在搜索與推薦之上,支持業(yè)務(wù)中深度模型的在線打分服務(wù)。
igraph 圖索引及查詢系統(tǒng),存儲(chǔ)用戶的行為信息。在實(shí)踐中,還會(huì)用來存儲(chǔ)如 kv、kkv 結(jié)構(gòu)的服務(wù)化數(shù)據(jù)。
實(shí)時(shí)計(jì)算引擎與離線數(shù)據(jù)同步工具:
阿里內(nèi)部使用較多的 Blink。大家可以認(rèn)為是 Flink 的升級版,功能更加完善,也更加強(qiáng)大,甚至已經(jīng)成為了阿里巴巴實(shí)時(shí)計(jì)算的主流引擎,下面將要講的案例大都是以 Blink 為基礎(chǔ)實(shí)現(xiàn)的。
異構(gòu)數(shù)據(jù)源之間的同步工具 DataX。即通過底層的 ODPS ( Open Data Processing Service ) 服務(wù)將不同數(shù)據(jù)源的數(shù)據(jù)進(jìn)行同步。
數(shù)據(jù)存儲(chǔ):
OPDS 開放數(shù)據(jù)處理服務(wù),基于阿里飛天分布式平臺(tái),支撐 GB/TB/PB 級的數(shù)據(jù)計(jì)算服務(wù)。
Tddl 是分表分庫的一個(gè)中間件,可以認(rèn)為是類似于 MySQL 的一種工具,在其上進(jìn)行封裝后,分表分庫可以橫向縱向的無限擴(kuò)展。
03 工程實(shí)踐
下面將面向業(yè)務(wù)類型,進(jìn)行案例講解,一是系統(tǒng)業(yè)務(wù)數(shù)據(jù)實(shí)時(shí)化的案例;二是根據(jù)用戶行為的實(shí)時(shí)數(shù)據(jù)服務(wù)。
1. 系統(tǒng)業(yè)務(wù)數(shù)據(jù)實(shí)時(shí)化
任務(wù):因?yàn)樗阉魍扑]以及促銷活動(dòng)商品池更新汰換,將導(dǎo)致商品的各種信息發(fā)生變化。從原始數(shù)據(jù)源中的數(shù)據(jù)實(shí)時(shí)同步更新到服務(wù)引擎中,就顯得非常有必要。
案例1:商品統(tǒng)計(jì)數(shù)據(jù)實(shí)時(shí)化
要求:商品的成交金額、買家數(shù)、其他算法指標(biāo)在線上發(fā)生變化時(shí)候,就能在線上的搜索引擎中實(shí)時(shí)顯示出來。
針對數(shù)據(jù)準(zhǔn)確性不同要求,設(shè)計(jì)了差異化的解決方案:
賣家或者買家在前端頁面展示出來的數(shù)據(jù)是非常精準(zhǔn)的,這個(gè)用中間的數(shù)據(jù)庫做轉(zhuǎn)存,然后再進(jìn)入搜索引擎。
在線打分、商品排序階段,一些算法的因子可能存在時(shí)效性的誤差,我們是實(shí)時(shí)計(jì)算算好直接進(jìn)入搜索引擎,更加高效,更加輕量,延遲更低,并發(fā)度可以更多。
全量+增量互補(bǔ)的方案
上面是實(shí)時(shí)的解決方案,對于 T+1 級別的數(shù)據(jù),要把 T-n->T 天的數(shù)據(jù)做一個(gè)全量的計(jì)算,再進(jìn)到搜索引擎中,因?yàn)槊刻斓乃阉饕媸亲鲆粋€(gè)全量更新的。
案例2:推薦商品的實(shí)時(shí)更新汰換
背景:在1688網(wǎng)站,每年要舉行3次S級的大促,類似于天貓?zhí)詫毜碾p11大促,大促會(huì)場一直是買家流量的主要承接場景,是大促的主要陣地。
原來的時(shí)候,算法是通過離線進(jìn)行召回的,存在召回能力不足,效果不好的問題。
改進(jìn)為算法實(shí)時(shí)召回,并且運(yùn)營可以配置召回及打分方式,實(shí)現(xiàn)大促會(huì)場商品的實(shí)時(shí)更新汰換和算法能力結(jié)合,是運(yùn)營的重要抓手,也對大促會(huì)場的匹配效率起到關(guān)鍵作用。
案例3:廣告引擎和推薦引擎之間的數(shù)據(jù)實(shí)時(shí)同步
背景:2018年下半年,推薦商業(yè)化:當(dāng)時(shí)廣告引擎和推薦引擎是異構(gòu)的,召回的方式完全不一樣,廣告走的是搜索的邏輯,根據(jù) Query 詞;而推薦根據(jù)用戶行為、或者冷啟動(dòng)進(jìn)行召回。
現(xiàn)在將廣告的數(shù)據(jù)同步到推薦引擎中,將千萬級別的全量廣告商品集進(jìn)行精品篩選,得到百萬級別的精品商品集。使用 Blink batch 將這些數(shù)據(jù)每5分鐘全量更新一次,并按照商品投放計(jì)劃消息把數(shù)據(jù)更新給推薦廣告引擎。
2. 實(shí)時(shí)數(shù)據(jù)服務(wù)
實(shí)時(shí)數(shù)據(jù)服務(wù)就是將用戶行為數(shù)據(jù)從埋點(diǎn)收集到最終應(yīng)用的整個(gè)過程,構(gòu)成實(shí)時(shí)數(shù)據(jù)服務(wù)的閉環(huán)體系。利用用戶的歷史行為數(shù)據(jù),進(jìn)行加工、計(jì)算、孵化,作用到每一個(gè)算法需要介入的場景中,比如實(shí)時(shí)搜索、個(gè)性化推薦、會(huì)場場景等。
首先,通過場景的規(guī)范埋點(diǎn)進(jìn)行用戶行為數(shù)據(jù)的采集,得到原始數(shù)據(jù)存儲(chǔ) TT 流,這些是阿里日志中臺(tái)做的工作。
其次,將數(shù)據(jù)通過 Blink 進(jìn)行打標(biāo)簽,這里是通用標(biāo)簽,跟業(yè)務(wù)無關(guān)。然后,根據(jù)業(yè)務(wù)場景對數(shù)據(jù)進(jìn)行多維度的聚合加工,如用戶維度、商品維度、場景維度等。最后,建立統(tǒng)一的服務(wù)層,對外提供接口,將數(shù)據(jù)應(yīng)用到業(yè)務(wù)場景中。
最后搭建的實(shí)時(shí)數(shù)據(jù)服務(wù)解析如上圖所示:
當(dāng)用戶進(jìn)入網(wǎng)站后,通過用戶標(biāo)識(shí),用戶的點(diǎn)擊,收藏,加購,支付的數(shù)據(jù)將會(huì)實(shí)時(shí)進(jìn)入到實(shí)時(shí)數(shù)據(jù)服務(wù)層。
用戶在瀏覽商品的時(shí)候,會(huì)對商品做曝光過濾處理,因?yàn)椴幌M脩裘看芜M(jìn)入網(wǎng)站都看到相同的東西,而是根據(jù)算法將商品展示的序列進(jìn)行優(yōu)化。
每個(gè)商品,根據(jù)商品的 id 可以在后臺(tái)得到商品實(shí)時(shí)的 CTR/CVR 數(shù)據(jù),由中臺(tái)基礎(chǔ)的 Blink 提供實(shí)時(shí)計(jì)算。
根據(jù)商品 id,可以實(shí)時(shí)查詢某種商品的成交額,支持批量查詢。
針對于新形態(tài)的挑貨與直播,通過 feeds id 可以得到 feeds 的實(shí)時(shí) CTR/CVR。
在大促會(huì)場中,可以通過場景標(biāo)識(shí)+分桶標(biāo)識(shí),快速得到對應(yīng)場景的一些報(bào)表數(shù)據(jù) ( 曝光、點(diǎn)擊、成交、相應(yīng)的 uv 等 )。
用戶標(biāo)識(shí)+場景標(biāo)識(shí),根據(jù)得到的用戶在指定場景下的統(tǒng)計(jì)數(shù)據(jù),可用于實(shí)時(shí)化的個(gè)性化分流、推薦等。
場景的標(biāo)識(shí),得到場景的總體統(tǒng)計(jì),可以用于流量分配機(jī)制的完善。
特別推薦一個(gè)分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長按關(guān)注一下:
長按訂閱更多精彩▼
如有收獲,點(diǎn)個(gè)在看,誠摯感謝
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場,如有問題,請聯(lián)系我們,謝謝!