攜程 | 手把手教你用大數(shù)據(jù)打造用戶(hù)畫(huà)像
用戶(hù)畫(huà)像作為“”的核心組成部分,在眾多互聯(lián)網(wǎng)公司中一直有其獨(dú)特的地位。
作為國(guó)內(nèi)旅游OTA的領(lǐng)頭羊,攜程也有著完善的用戶(hù)畫(huà)像平臺(tái)體系。目前用戶(hù)畫(huà)像廣泛用于個(gè)性化推薦,猜你喜歡等;針對(duì)旅游市場(chǎng),攜程更將其應(yīng)用于“房型排序”“機(jī)票排序”“客服投訴”等諸多特色領(lǐng)域。本文將從目的,架構(gòu)、組成等幾方面,帶你了解攜程在該領(lǐng)域的實(shí)踐。
1.攜程為什么做用戶(hù)畫(huà)像
首先,先分享一下攜程用戶(hù)畫(huà)像的初衷。一般來(lái)說(shuō),推薦算法基于兩個(gè)原理“根據(jù)人的喜好推薦對(duì)應(yīng)的產(chǎn)品”“推薦和目標(biāo)客人特征相似客人喜好的產(chǎn)品”。而這兩條都離不開(kāi)用戶(hù)畫(huà)像。
根據(jù)用戶(hù)信息、訂單、行為等等推測(cè)出其喜好,再針對(duì)性的給出產(chǎn)品可以極大提升用戶(hù)感受,能避免用戶(hù)被無(wú)故打擾的不適感。同時(shí)針對(duì)不同畫(huà)像的用戶(hù)提供個(gè)性化的服務(wù)也是攜程用戶(hù)畫(huà)像的出發(fā)點(diǎn)之一。
2.攜程用戶(hù)畫(huà)像的架構(gòu)
2.1.攜程用戶(hù)畫(huà)像的產(chǎn)品架構(gòu)

如上圖所示,攜程用戶(hù)畫(huà)像的產(chǎn)品架構(gòu)大體可以總結(jié)為:
注冊(cè)
采集
計(jì)算
存儲(chǔ)/查詢(xún)
監(jiān)控
所有的用戶(hù)畫(huà)像都會(huì)在”UserProfile平臺(tái)”中進(jìn)行注冊(cè),由專(zhuān)人審核,審核通過(guò)的畫(huà)像才可以在“”中流轉(zhuǎn);之后會(huì)通過(guò)用戶(hù)信息、訂單、行為等等進(jìn)行信息采集,采集的目標(biāo)是明確的、海量的、無(wú)序的。
信息收集的下一步是畫(huà)像的計(jì)算,攜程有專(zhuān)人制定計(jì)算公式、算法、模型,而計(jì)算分為批量(非實(shí)時(shí))和流式(實(shí)時(shí))兩種,經(jīng)過(guò)嚴(yán)密的計(jì)算,畫(huà)像進(jìn)入“畫(huà)像倉(cāng)庫(kù)”中;而根據(jù)不同的使用場(chǎng)景,我們又會(huì)提供實(shí)時(shí)和批量?jī)煞N查詢(xún)API供各調(diào)用方使用,實(shí)時(shí)的服務(wù)側(cè)重高可用,批量服務(wù)側(cè)重高吞吐;最后所有的畫(huà)像都在監(jiān)控平臺(tái)中得到有效的監(jiān)控和評(píng)估,保證畫(huà)像的準(zhǔn)確性。
2.2.攜程用戶(hù)畫(huà)像的技術(shù)架構(gòu)

攜程發(fā)展到今天規(guī)模,更強(qiáng)調(diào)松耦合、高內(nèi)聚,實(shí)行BU化的管理模式。而用戶(hù)畫(huà)像是一種跨BU的模型,故從技術(shù)架構(gòu)層面,攜程用戶(hù)畫(huà)像體系如上圖所示。
各BU都可以貢獻(xiàn)有價(jià)值的畫(huà)像,而基礎(chǔ)部門(mén)也會(huì)根據(jù)BU的需要不斷制作新的畫(huà)像。畫(huà)像經(jīng)過(guò)開(kāi)源且經(jīng)我們二次開(kāi)發(fā)的DataX和Storm進(jìn)入攜程跨BU的UserProfile數(shù)據(jù)倉(cāng)庫(kù)。在倉(cāng)庫(kù)之上,我們會(huì)有Redis緩存層以保證數(shù)據(jù)的高可用,同時(shí)有實(shí)時(shí)和借助elasticsearch兩種方式的API,供調(diào)用方使用。
該架構(gòu)有如下關(guān)鍵點(diǎn):
1.有異步和實(shí)時(shí)兩種通道滿(mǎn)足不同場(chǎng)景、不同畫(huà)像的需要,事實(shí)類(lèi)畫(huà)像一般采用實(shí)時(shí)計(jì)算方式,而復(fù)合類(lèi)畫(huà)像一般采用異步方式。
2.攜程強(qiáng)調(diào)專(zhuān)人專(zhuān)用,每個(gè)人做自己最適合的事。故整個(gè)UserProfile是多個(gè)團(tuán)隊(duì)合作完成的,其中包括但不限于各BU的開(kāi)發(fā)、BI,基礎(chǔ)的開(kāi)發(fā)、BI等。
3.所有API都是可降級(jí)、可熔斷的,可以根據(jù)需要切數(shù)據(jù)流量。
4.由于用戶(hù)畫(huà)像極為敏感,出于數(shù)據(jù)安全的考慮,我們查詢(xún)服務(wù)有嚴(yán)格的權(quán)限控制方案,所有信息必須經(jīng)過(guò)授權(quán)才可以訪問(wèn)。
5.出于對(duì)用戶(hù)畫(huà)像準(zhǔn)確性負(fù)責(zé)的目的,我們有專(zhuān)門(mén)的UserProfile數(shù)據(jù)可視化平臺(tái)監(jiān)控?cái)?shù)據(jù)的一致性、可用性、正確性。
上述是用戶(hù)畫(huà)像的總體描述,下面我將詳細(xì)分享各個(gè)細(xì)節(jié)。

如上圖所示,用戶(hù)畫(huà)像的注冊(cè)在一個(gè)典型的Mis系統(tǒng)中完成,UserProfile數(shù)據(jù)的提供方在這里申請(qǐng),由專(zhuān)人審核。申請(qǐng)時(shí),必須填寫(xiě)畫(huà)像的含義、計(jì)算方式、可能的值等。

3.攜程用戶(hù)畫(huà)像的組成
3.1.信息采集
基礎(chǔ)信息的采集是數(shù)據(jù)流轉(zhuǎn)的開(kāi)始,我們會(huì)收集UserInfo(比如用戶(hù)個(gè)人信息、用戶(hù)出行人信息、用戶(hù)積分信息)、UBT(用戶(hù)在APP、網(wǎng)站、合作站點(diǎn)的行為信息)、用戶(hù)訂單信息、爬蟲(chóng)信息、手機(jī)APP信息等。而上述每個(gè)基礎(chǔ)信息的采集又是一個(gè)專(zhuān)門(mén)領(lǐng)域。比如下圖展示了用戶(hù)訂單信息采集流程。

3.2.畫(huà)像計(jì)算
基礎(chǔ)信息是海量的、無(wú)序的,不經(jīng)加工沒(méi)有太大的價(jià)值。故用戶(hù)畫(huà)像的計(jì)算是數(shù)據(jù)流轉(zhuǎn)的關(guān)鍵所在。我們的BI團(tuán)隊(duì)會(huì)制定嚴(yán)密的公式和模型,根據(jù)場(chǎng)景的需要,制定規(guī)則和參數(shù),對(duì)采集信息做異步計(jì)算。這樣的計(jì)算由于耗時(shí)較長(zhǎng),一般我們會(huì)采用T+N的方式異步更新,根據(jù)畫(huà)像的不同,數(shù)據(jù)新鮮度的要求亦不同。動(dòng)態(tài)和組合標(biāo)簽大多采用異步方式計(jì)算更新。Hive、DataX等開(kāi)源工具被使用在這個(gè)步驟中。
而有些畫(huà)像是事實(shí)或?qū)π迈r度要求比較高的,故我們會(huì)采用Kafka+Storm的流式方案去實(shí)時(shí)更新計(jì)算。比如下圖,UBT(用戶(hù)行為數(shù)據(jù))使用消息通道Hermes對(duì)接Kafka+Storm為UserProfile的實(shí)時(shí)計(jì)算提供了有力的支持。

3.3.信息存儲(chǔ)
用戶(hù)畫(huà)像的數(shù)據(jù)是海量的,被稱(chēng)作最典型的”大數(shù)據(jù)”,故Sharding分布式存儲(chǔ)、分片技術(shù)、緩存技術(shù)被必然的引入進(jìn)來(lái)。
攜程的用戶(hù)畫(huà)像倉(cāng)庫(kù)一共有160個(gè)數(shù)據(jù)分片,分布在4個(gè)物理數(shù)據(jù)集群中,同時(shí)采用跨IDC熱備、一主多備、SSD等主流軟硬件技術(shù),保證數(shù)據(jù)的高可用、高安全。
由于用戶(hù)畫(huà)像的的使用場(chǎng)景非常多、調(diào)用量也異常龐大,這就要求用戶(hù)畫(huà)像的查詢(xún)服務(wù)一定要做到高可用。故我們采用自降級(jí)、可熔斷、可切流量等方案,在倉(cāng)庫(kù)前端增加緩存。如下圖所示,數(shù)據(jù)倉(cāng)庫(kù)和緩存的存儲(chǔ)目的不同,故是異構(gòu)的。

3.4.高可用查詢(xún)
響應(yīng)時(shí)間和TPS是衡量服務(wù)可用性的關(guān)鍵指標(biāo),攜程要求所有API響應(yīng)時(shí)間低于250ms(包括網(wǎng)絡(luò)和框架埋點(diǎn)消耗),而我們用戶(hù)畫(huà)像實(shí)時(shí)服務(wù)采用自降級(jí)、可熔斷、自短路等技術(shù),服務(wù)平均響應(yīng)時(shí)間控制在8ms(包括網(wǎng)絡(luò)和框架埋點(diǎn)消耗),99%響應(yīng)時(shí)間控制在11ms。

大部分場(chǎng)景都是通過(guò)單個(gè)用戶(hù)獲取用戶(hù)畫(huà)像,但部分營(yíng)銷(xiāo)場(chǎng)景則需要滿(mǎn)足特定畫(huà)像的用戶(hù)群體,比如獲取年齡大于30歲、消費(fèi)能力強(qiáng)、有親子偏好的女性。這種情況下會(huì)返回大量用戶(hù),此時(shí)就需要借助批量查詢(xún)工具。經(jīng)過(guò)多次技術(shù)選型,我們決定采用elasticsearch作為批查詢(xún)的平臺(tái),封裝成API后很好的支持上述場(chǎng)景。
3.5.監(jiān)控和跟蹤
在數(shù)據(jù)流轉(zhuǎn)的最后,數(shù)據(jù)的準(zhǔn)確性是衡量用戶(hù)畫(huà)像價(jià)值的關(guān)鍵指標(biāo)。基于高質(zhì)量信息優(yōu)于大數(shù)量信息的基調(diào),我們?cè)O(shè)置了多層監(jiān)控平臺(tái)。從多個(gè)維度衡量數(shù)據(jù)的準(zhǔn)確性。比如就用戶(hù)消費(fèi)能力這個(gè)畫(huà)像,我們從用戶(hù)等級(jí)、用戶(hù)酒店星級(jí)、用戶(hù)機(jī)票兩艙等多個(gè)維度進(jìn)行驗(yàn)證和斧正。同時(shí)我們還要監(jiān)控?cái)?shù)據(jù)的環(huán)比和同比表現(xiàn),出現(xiàn)較大標(biāo)準(zhǔn)差、方差波動(dòng)的數(shù)據(jù),我們會(huì)重新評(píng)估算法。

上述所有環(huán)節(jié)組成了攜程跨BU用戶(hù)畫(huà)像平臺(tái)。當(dāng)然技術(shù)日新月異,我們也在不斷更新和局部創(chuàng)新,或許明年又會(huì)有很多新的技術(shù)被引入到我們用戶(hù)畫(huà)像中,希望我的分享對(duì)你有所幫助。 作者介紹周源,攜程技術(shù)中心基礎(chǔ)業(yè)務(wù)研發(fā)部高級(jí)研發(fā)經(jīng)理,從事軟件開(kāi)發(fā)10余年。2012年加入攜程,先后參與支付、營(yíng)銷(xiāo)、客服、用戶(hù)中心的設(shè)計(jì)和研發(fā)。
轉(zhuǎn)載自36大數(shù)據(jù)
詳情請(qǐng)咨詢(xún)!
客服熱線(xiàn):023-66090381