多点在线构建Noxmobi全球化精准营销系统
?
摘要:大數(shù)據(jù)計(jì)算服務(wù)(MaxCompute,原名ODPS)是一種快速、完全托管的TB/PB級數(shù)據(jù)倉庫解決方案。MaxCompute向用戶提供了完善的數(shù)據(jù)導(dǎo)入方案以及多種經(jīng)典的分布式計(jì)算模型,能夠更快速的解決用戶海量數(shù)據(jù)計(jì)算問題,有效降低企業(yè)成本,并保障數(shù)據(jù)安全。在本文中北京多點(diǎn)在線高級架構(gòu)師楊洋分享了基于MaxCompute構(gòu)建Noxmobi全球化精準(zhǔn)營銷系統(tǒng)。
?
本文內(nèi)容根據(jù)演講視頻以及PPT整理而成。
多點(diǎn)在線屬于泛娛樂行業(yè)的公司,主打產(chǎn)品是Nox夜神模擬器,其主要用于在PC端玩手游,該產(chǎn)品目前已經(jīng)穩(wěn)居國內(nèi)市場占有率第一兩年多的時(shí)間了,處于行業(yè)領(lǐng)導(dǎo)者的地位。Nox下面主要有兩個(gè)品牌:Noxmobi和Influencer。
PPT材料下載地址:https://yq.aliyun.com/download/2727
視頻地址:https://edu.aliyun.com/lesson_1010_8791?spm=5176.10731542.0.0.UvzDru#_8791
產(chǎn)品地址:https://www.aliyun.com/product/odps
演講嘉賓簡介:
楊洋,多點(diǎn)在線高級架構(gòu)師。
?
本文分享將主要圍繞以下三個(gè)方面:
一、行業(yè)及公司背景介紹
二、廣告業(yè)務(wù)和系統(tǒng)
三、相關(guān)技術(shù)及MaxCompute應(yīng)用
?
一、行業(yè)及公司背景介紹
行業(yè)介紹:什么是數(shù)字營銷
?
目前全球廣告市場規(guī)劃約6000億,其中約30%為互聯(lián)網(wǎng)和移動互聯(lián)網(wǎng)廣告,所以這塊蛋糕也是很大的。數(shù)字營銷、互聯(lián)網(wǎng)廣告、在線廣告、計(jì)算廣告、程序化廣告等所說的基本上都是同一件事情,這些主要解決的問題就是如何在互聯(lián)網(wǎng)媒體上投放廣告的問題。
?
行業(yè)介紹:什么是數(shù)字營銷?
數(shù)字營銷主要有三方參與者:廣告主、媒體和中間商。
廣告主(需求方):其需求往往是面對流量和庫存的,其最大需求就是如何成本更低,效果更好。而效果的定義往往是不同的,一般分為品牌和效果兩種。對于品牌而言,比如可口可樂打廣告,人們看到廣告可能不會立即去買一瓶喝,但是品牌廣告會深植在人們的心里,進(jìn)而產(chǎn)生長期的效應(yīng);而效果廣告比如在頭條上看到一個(gè)廣告,用戶當(dāng)時(shí)看到有興趣可能就會點(diǎn)擊之后進(jìn)行下載了,這樣就能發(fā)生直接的轉(zhuǎn)化效果,這種就叫做效果廣告。
媒體(供應(yīng)方):其需求比較簡單,就是如何收益更高。收益具有長期和短期之分,媒體往往不能因?yàn)槎唐诘母呃娑艞壝襟w的形象,這樣才能讓長期的利益更高。
中間商:主要就是通過連接供需來賺差價(jià)。有些廣告宣傳的中間商不賺差價(jià)基本上是不可能的,只不過是怎么賺和什么時(shí)候賺的問題。賺取差價(jià)的主要手段就是規(guī)模效應(yīng)和壟斷,而無論是廣告主和媒體只要能夠壟斷就能夠具有更高的議價(jià)權(quán)。
?
總而言之,數(shù)字營銷就是應(yīng)用最新的互聯(lián)網(wǎng)技術(shù)來提高營銷效率,會應(yīng)用比較前沿的人工智能、機(jī)器學(xué)習(xí)、經(jīng)濟(jì)學(xué)上的博弈論等。廣告主會追求減少浪費(fèi),讓最合適的人看到廣告,這也是數(shù)字營銷相比傳統(tǒng)營銷的特點(diǎn)。媒體則是將廣告為賣給最需要的人,最需要的人則將會通過出價(jià)體現(xiàn)自己的需要。中間商則是高效地撮合交易。如下圖所示的是廣告行業(yè)的簡單生態(tài)圖,圖中的DSP大概就是前面提到的需求方,也就是廣告主。其右邊是流量方也就是媒體,下面這部分則是賺取差價(jià)的中間商。
?
二、廣告業(yè)務(wù)和系統(tǒng)
Nox夜神介紹:Three major product systems support to capture high-LTV users with low cost
上圖中最左邊是Noxmobi廣告平臺;中間的是Influencer,在國外基本上就是網(wǎng)紅;最右邊的NoxPlayer和NoxCleaner就是Nox自有的媒體流量,多點(diǎn)在線的廣告也主要會投放在這些廣告上。
?
Nox夜神介紹:Manage Every Marketing Stage
如上圖所示的是夜神在發(fā)行前期、中期和后期所應(yīng)該使用的相應(yīng)產(chǎn)品。
?
Nox夜神介紹:Pre-Launch and Launch Marketing
如上圖所示的就是Nox流量上的廣告位,圖中右側(cè)是模擬器的啟動圖和Launcher部分的廣告位,這些廣告也不會非常影響用戶的體驗(yàn)。Nox主要是做海外的生意,而國內(nèi)和海外的廣告市場是不同的,所以也是分開來做的。
?
NoxInfluencer示例
如上圖所示的是目前主推的Influencer,目前也有一波流量紅利,找網(wǎng)紅推送APP,右圖是Nox為Keep做的廣告,比如在健身教練所發(fā)出的視頻或者直播,給教練一些收益,一起來做視頻,也可以看到Keep的廣告收益也是非常好的。目前Nox也對于自己的流量端產(chǎn)品用Influencer進(jìn)行營銷,花費(fèi)大約10萬,使得自然新增達(dá)到了每天1萬,APP開發(fā)者都知道這其實(shí)是一個(gè)非常可觀的數(shù)字,因?yàn)樽匀恍略瞿軌驅(qū)?yīng)用在GooglePlay上的排名推到很高的位置,使得NoxCleaner在一些國家直接達(dá)到工具排行榜的前三。
?
廣告業(yè)務(wù)流程介紹:Online advertising
在線廣告業(yè)務(wù)的基本流程可以從用戶的訪問開始,用戶首先打開一個(gè)APP或者訪問一個(gè)頁面,當(dāng)發(fā)生了用戶訪問行為之后,一般在APP里面會有廣告的SDK,之后SDK就會觸發(fā)展示然后去請求廣告的內(nèi)容。SDK一般會與一個(gè)SSP關(guān)聯(lián),屬于某一家SSP,然后去SSP上請求廣告。SSP再對接ADX,也就是之前所提到的中間商,其主要負(fù)責(zé)撮合交易。ADX又會對接很多的DSP,并向很多的DSP發(fā)起競價(jià)邀請,DSP則將會代表廣告主決定是否需要投廣告以及廣告的出價(jià)是多少,并在ADX進(jìn)行多家的比較,做一次競價(jià)的拍賣,價(jià)高者得,但是按照第二高價(jià)收費(fèi),再將獲勝者一步步返回給用戶,用戶最終就會看到贏得本次競價(jià)的廣告。廣告后續(xù)還會發(fā)生一些點(diǎn)擊、下載、安裝等行為,并進(jìn)行進(jìn)一步跟蹤。
?
Nox廣告系統(tǒng)演進(jìn)
如上圖所示的是Nox廣告系統(tǒng)的演進(jìn)情況,首先可能與小開發(fā)者一樣直接集成第三方的SDK,而第三方的SDK的廣告是完全不能被控制的,只不過會每天給Nox一定的收益,而在這個(gè)階段其實(shí)收益也是比較低的。后來,Nox就自己做了一個(gè)廣告展示模塊,由業(yè)務(wù)同學(xué)去接國外的離線Offer,在國外某些廣告主或者品牌會放出來一些離線的Offer,這樣的收益就比第一階段高出了很多,這個(gè)階段的系統(tǒng)會自己在客戶端做展示模塊,而在業(yè)務(wù)Server里面則會有相應(yīng)的展示控制模塊,再往后就是在接到Offer之后做一些簡單的CTL預(yù)估,之后再做一些比較并將收益比較高的投放出去。第三個(gè)階段系統(tǒng)展現(xiàn)圖中的中心部分就是廣告業(yè)務(wù),最外層的兩個(gè)模塊就是原來的業(yè)務(wù)系統(tǒng),最外層兩個(gè)模塊之間的連接就會變得很細(xì),基本上只做流量切分的工作,而中心部分就是前面所提到的DSP、SSP以及集成的ADX模塊,從而形成一個(gè)完整的廣告生態(tài)。在這里,除了自己本身的DSP還會和第三方的DSP進(jìn)行競價(jià)保證流量的收益最大化。此外,SDK還可以做成融合的,雖然其不開放,但是將做成展現(xiàn)其他第三方SDK也會產(chǎn)生一些收益。
?
三、相關(guān)技術(shù)及MaxCompute應(yīng)用
DSP 系統(tǒng)數(shù)據(jù)流及相關(guān)服務(wù)
SSP和ADX相對而言比較簡單,因此在這部分將會重點(diǎn)講述一下DSP系統(tǒng)數(shù)據(jù)流。Rtb就是Runtime Bidding,也是DSP里面比較重要的一個(gè)部分,主要是做實(shí)時(shí)競價(jià)的。所以廣告流程一般而言就是從Rtb模塊開始,在競價(jià)的過程中會產(chǎn)生Bidding的Event,并將Bidding的Event都輸入到Kafka里面,Kafka里面會有訂閱的消息,一直更新大的Cache,這里面的數(shù)據(jù)會通過流式計(jì)算做成feature再反饋給Rtb系統(tǒng)。Pixel就是事件服務(wù),比如發(fā)生了展現(xiàn)或者安裝之后就會訪問到這個(gè)服務(wù),而這個(gè)服務(wù)將會Tracking到本次廣告的所有Session,這樣的數(shù)據(jù)也會流入Kafka,同樣由Updater和流式計(jì)算進(jìn)行處理。而從Kafka里面會另外分出來一只數(shù)據(jù)流通過高速通道回流到中心節(jié)點(diǎn),也就是MaxCompute上面。MaxCompute會進(jìn)行一些離線的報(bào)表計(jì)算和特征,報(bào)表就會輸出到DSP Report上面(比如RDS)。
其實(shí)Nox設(shè)計(jì)的所有廣告的核心數(shù)據(jù)將會走這樣的一套比較復(fù)雜的流程,而一些運(yùn)營相關(guān)的非核心數(shù)據(jù)則會主要使用了自己搭建在阿里云上的神策這款BI服務(wù),其也屬于企業(yè)級的應(yīng)用服務(wù)。
?
流式計(jì)算Spark Streaming應(yīng)用
流式計(jì)算Spark Streaming主要用于實(shí)現(xiàn)實(shí)時(shí)的報(bào)表以及實(shí)時(shí)特征的計(jì)算。因?yàn)闃I(yè)務(wù)的主要要求是必須穩(wěn)定并且能夠?qū)崿F(xiàn)7*24小時(shí)的可用。可以接受秒級延遲,比如廣告投出去了,晚10秒鐘展現(xiàn)在報(bào)表里也是沒問題的。可根據(jù)吞吐量橫向擴(kuò)展,比如突然新接了幾家SSP,突然變得流量很大,不能在這個(gè)時(shí)候讓系統(tǒng)掛掉。此外,因?yàn)闃I(yè)務(wù)在全球都有,所以需要全球的聚合任務(wù),需要通過一個(gè)平臺看到各個(gè)國家的數(shù)據(jù)。
Nox選擇的方案就是:Spark Streaming能夠?qū)⑸厦鎺醉?xiàng)需求全部滿足,另外就是配合Kafka、RDS以及Redis做輸出。在部署上面,需要實(shí)現(xiàn)小集群獨(dú)占,這里所用到的就是阿里云EMR,其可以幫助客戶托管集群,Nox只需要在阿里云EMR上面申請一個(gè)小集群,比如三到五臺機(jī)器,這些機(jī)器申請之后就不再釋放掉了,會一直獨(dú)占著,并且7*24小時(shí)地跑流式計(jì)算任務(wù)。原始日志壓縮流式回傳,這個(gè)是因?yàn)镹ox在各個(gè)數(shù)據(jù)中心都有Bidder或者Pixel的服務(wù),會產(chǎn)生很多數(shù)據(jù),之前的一種方案是在每個(gè)中心先將數(shù)據(jù)計(jì)算成半成品,之后在進(jìn)行回傳,這樣所用的帶寬就會比較小,但是如果采用這樣方案,那么所有的功能都需要開發(fā)兩套,在本地先計(jì)算,之后傳回來再進(jìn)行聚合計(jì)算,這樣就會比較復(fù)雜,因此最終決定將日志進(jìn)行壓縮,以流式方式進(jìn)行回傳,這樣的方案在驗(yàn)證之后發(fā)現(xiàn)所占的帶寬不是很大,而因?yàn)槭橇魇絺鬏?#xff0c;因此帶寬也比較平穩(wěn),雖然這里所用的帶寬屬于高速通道帶寬,因此成本也可以接受。而壓縮則使用了Kafka,其是能夠支持壓縮協(xié)議的。此外,中心節(jié)點(diǎn)部署能夠方便開發(fā)。
?
上圖中最底層就是阿里云的EMR托管服務(wù),在其上是DSP平臺和SSP平臺,他們的集群是分開的,如果流量特別大,某一個(gè)平臺被打掛掉了,另外一個(gè)平臺是不會受到影響的。而托管服務(wù)的好處就是能夠托管很小的集群,對于企業(yè)而言也沒有什么成本。Kafka里面輸入的就是Event的Topic,之后還會輸出回Kafka,這樣Updater再將Kafka里面的數(shù)據(jù)放到Redis或者RDS用于構(gòu)建模型和計(jì)算報(bào)表。這樣的設(shè)計(jì)的唯一問題就是比較依賴于高速通道,這樣穩(wěn)定性和擴(kuò)展性就有可能受到限制。
?
離線計(jì)算MaxCompute應(yīng)用
離線計(jì)算部分,Nox主要使用了MaxCompute。幾乎使用了MaxCompute來解決各類數(shù)據(jù)計(jì)算問題,BI數(shù)據(jù)、廣告報(bào)表、反作弊、標(biāo)簽抽取、特征數(shù)據(jù)計(jì)算、統(tǒng)一用戶標(biāo)識、爬蟲數(shù)據(jù)處理等。其實(shí)在一開始,Nox也是自建Hadoop集群,購買了阿里云的ECS搭建集群,從最開始的6臺一直到后來的十幾臺,這時(shí)候?qū)嵲诳覆蛔×?#xff0c;機(jī)器經(jīng)常宕機(jī),因?yàn)槭褂玫氖荢park,因此內(nèi)存很容易占滿,某一天用戶突然增多了,數(shù)據(jù)就沒了。此外,這樣的成本也非常高,因?yàn)楫?dāng)時(shí)主要運(yùn)行BI數(shù)據(jù),所以基本上都是在晚上運(yùn)行的,而白天機(jī)器則處于空閑狀態(tài),因此成本很高。后來采用了EMR的按量付費(fèi)集群,晚上申請之后跑數(shù)據(jù),但是白天能夠釋放掉,但是這樣的過程則是比較漫長的,需要10到20分鐘。后來Nox開始接觸到MaxCompute,使用起來非常好,其帶來了很多優(yōu)勢。首先,不再需要運(yùn)維集群了,此外其計(jì)算速度很快,雖然說Spark的計(jì)算速度很快,但是小集群的Spark和大集群的Hadoop是無法比擬的,所以大集群的Hadoop其實(shí)計(jì)算速度是很快的。MaxCompute是真正的按量付費(fèi),因此成本也能夠大大降低,而自建Hadoop、使用EMR以及使用MaxCompute的成本是成量級降低的。差距也是非常大的。主要使用SQL開發(fā),效率比較高,也便于調(diào)試,文檔也比較清晰。此外,MaxCompute還提供了一個(gè)還不錯(cuò)的調(diào)度系統(tǒng),如果是自己搭建這樣調(diào)度系統(tǒng)還是比較困難的。
對于數(shù)據(jù)的導(dǎo)入和導(dǎo)出而言,因?yàn)镹ox有很多海外的服務(wù),有些服務(wù)是不能覆蓋到的。所以Nox采取的策略是優(yōu)先使用數(shù)據(jù)同步服務(wù),而流式數(shù)據(jù)則使用SDK,當(dāng)數(shù)據(jù)同步和SDK都不合適就寫腳本+tunnel導(dǎo)入和導(dǎo)出數(shù)據(jù)。
?
如上圖所示的文件數(shù)據(jù)主要是爬蟲,因?yàn)橐恍┓?wù)的日志是達(dá)到OSS上的,并且有一些外部數(shù)據(jù)也是先上傳到OSS上面的。RDS則是什么都有的,廣告業(yè)務(wù)數(shù)據(jù)就是前面所提到的,這些數(shù)據(jù)會選擇合適的方式統(tǒng)一進(jìn)入到MaxCompute的分區(qū)表里面。SQL計(jì)算基本上都會用到,MaxCompute則是在SQL寫起來很費(fèi)力或者運(yùn)行很慢的情況下使用。圖計(jì)算使用的并不多,只是會在計(jì)算同一用戶UUID的情況下使用,這里應(yīng)用了最小連通域的算法,比如一個(gè)用戶使用了多個(gè)設(shè)備,則需要將這些設(shè)備統(tǒng)一地關(guān)聯(lián)到同一個(gè)用戶身上。而PAI平臺對于廣告的CTL預(yù)估非常重要。
?
特征計(jì)算和標(biāo)簽抽取
如下圖所示的某第三方DMP的對外標(biāo)簽體系的示例,大概分了幾類,比如人口學(xué)、設(shè)備信息等大類,在每個(gè)大類下面還會有多個(gè)標(biāo)簽。特征一般而言就是連續(xù)值,標(biāo)簽則是指將連續(xù)值做一些規(guī)則之后所打的標(biāo)簽。舉例而言,定義特征,最近一周內(nèi)活躍天數(shù),則有0~7的取值。而定義標(biāo)簽規(guī)則,則是一周內(nèi)活躍0天、1天、2~3天、4~5天、6~7天的分別是不活躍、低活躍、中活躍、高活躍、極高活躍用戶。當(dāng)在做好定義之后,就要看大家的SQL寫的是好是壞了。之前在不支持with的時(shí)候,SQL代碼一般都要寫很大一堆,而且很難改動。此外,在寫SQL的時(shí)候注意代碼分隔還是很重要的。另外的一些建議就是優(yōu)先使用內(nèi)建函數(shù),雖然一些內(nèi)建函數(shù)和UDF的功能差不多,可能一個(gè)UDF能夠?qū)崿F(xiàn)兩三個(gè)內(nèi)建函數(shù)的功能,但是效率卻相差了很多,雖然使用內(nèi)建函數(shù)會讓代碼看起來丑一些,但是絕對比UDF運(yùn)行速度要快得很多,所以在內(nèi)建函數(shù)無法滿足需求的時(shí)候再去考慮UDF,實(shí)在不行就可以用MapReduce實(shí)現(xiàn),比如對一大批特征做等頻離散化。
上述這些都是DMP的標(biāo)準(zhǔn)功能,但是Nox目前還沒將其實(shí)現(xiàn)平臺化,都是使用標(biāo)簽寫的。而阿里云上有標(biāo)簽服務(wù),目前也在考慮使用。
?
Targeting
所謂Targeting就是人群定向,相對于把特征輸入模型而言,標(biāo)簽式Targeting主要是方便人來操作,使用投放人的經(jīng)驗(yàn)通過標(biāo)簽定向的方式來優(yōu)化表達(dá)。比如在廣告投放初期可以比較好地縮放盲打范圍。另外一種則是Look-alike方式,Look-alike方式的定向?yàn)閷ふ蚁嗨频娜?#xff0c;種子用戶為正例,從所有用戶中找到正例概率較大的人群。以上就是定向的兩種主要方式。
如上圖所示的定向的主要做法就是將內(nèi)部和外部的數(shù)據(jù)輸入到MaxCompute里面,經(jīng)過各種計(jì)算將標(biāo)簽化的數(shù)據(jù)或者用機(jī)器學(xué)習(xí)標(biāo)注好的數(shù)據(jù)同步到線上并緩存好。之后在進(jìn)行實(shí)時(shí)競價(jià)RTB里面查詢緩存,命中之后就在DSP里面由廣告主配置,命中了就投放廣告,否則就不投放。
?
Ctr預(yù)估
Ctr預(yù)估是Nox投入比較多的一項(xiàng)工作。Ctr預(yù)估并不一定是預(yù)估Ctr,還可能去預(yù)估Cvr甚至是Ctr和Cvr的乘積,這些統(tǒng)稱為Ctr預(yù)估。其作用是首先計(jì)算Ecpm的值,Ecpm就是每次展現(xiàn)的期望收益,期望是一個(gè)概率論上的概念,其等于用單價(jià)乘上本次收益可能的概率。Ecpm也將指導(dǎo)絕大部分投放相關(guān)策略。
如上圖所示,主要分為兩條線,一條是離線數(shù)據(jù)會走M(jìn)axCompute,而在線則會走Spark Streaming。總體最后會輸入到標(biāo)簽和特征的大Cache里面,Cache中的數(shù)據(jù)有一部分直接加載到內(nèi)存里面,另外一部分比如用戶特征無法加入內(nèi)存就會在Inference服務(wù)查詢緩存,這里就會組合出一個(gè)特征的向量,用來計(jì)算Ctr的值,并將值返回給Rtb的Bidder,在Bidder做一系列的策略,最終得出競價(jià)的決策。競價(jià)完成之后,是否參與、是否競價(jià)成功以及是否展現(xiàn)等日志都會灌入回MaxCompute或者Spark Streaming進(jìn)行模型訓(xùn)練,最終對已有模型進(jìn)行更新,形成一個(gè)整體的閉環(huán)。Online model需要使用Spark Streaming,而Deep learning就需要用TensorFlow等了。
?
Pacing
Pacing比較復(fù)雜一些,其就是不止考慮單次展現(xiàn)的收益,而要在單次競價(jià)時(shí)考慮對全局收益的影響,比如考慮一天之內(nèi)總收益如何,比如可能將轉(zhuǎn)化率最高的Offer在一天開始的兩小時(shí)內(nèi)都投完了,但是其他的Offer都沒有投出去,這樣計(jì)算下來總收益并不如將全部廣告都投完的收益高。Pacing的整體思路就是通過對流量分層和分時(shí)的統(tǒng)計(jì)和預(yù)估,用數(shù)學(xué)方法來保證全局收益的最大化。Nox則根據(jù)Yahoo的論文實(shí)現(xiàn)了自己的方案,這里面最核心的就是將Ctr估算準(zhǔn)確,并將分層和分時(shí)的各種統(tǒng)計(jì)值計(jì)算好,然后按照其策略執(zhí)行即可。
Nox目前也在尋求更多的合作伙伴,希望更多與具有出海意向的開發(fā)者進(jìn)行深入合作。
如需了解更多關(guān)于MaxCompute產(chǎn)品和技術(shù)信息,可加入“MaxCompute開發(fā)者交流”釘釘群;
群號11782920,或掃描如下二維碼加入釘釘群。
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
云棲號 - 上云就看云棲號
總結(jié)
以上是生活随笔為你收集整理的多点在线构建Noxmobi全球化精准营销系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里云:助力数字经济新基建,打造物联网安
- 下一篇: 基于Tablestore多元索引打造亿量