什么是廣告系統(tǒng)
廣告是以“把合適的內(nèi)容推送給合適的受眾”為目的的商業(yè)交易過程,它同時(shí)為三種人群服務(wù):第一種是廣告主,即出錢購買廣告的人翘狱,需要通過廣告獲取顧客;第二種是媒體砰苍,即提供投放平臺(tái)以換取廣告費(fèi)收入的人潦匈,他們需要廣告費(fèi)實(shí)現(xiàn)流量變現(xiàn);第三種是消費(fèi)者赚导,即在媒體上觀看廣告的人茬缩,他們希望能低成本地享受媒體給他帶來的服務(wù),接受在不反感的前提下獲取廣告吼旧,如果碰到剛好符合他們需求同時(shí)也高質(zhì)量的廣告凰锡,他們還樂意產(chǎn)生消費(fèi)乱陡。
說到“把合適的內(nèi)容推送給合適的受眾”奄容,你可能很容易聯(lián)想到個(gè)性化推薦,那是不是一定具備個(gè)性化推薦技術(shù)才能構(gòu)造廣告系統(tǒng)呢瞄崇?其實(shí)也不一定厂置,比如一些垂直類的媒體本身就可以代表其用戶屬性菩掏,比如,你可以通過標(biāo)簽匹配昵济,把奶粉廣告投放到媽媽社區(qū)智绸,考試輔導(dǎo)班廣告投放到學(xué)生論壇,也能達(dá)到一個(gè)不錯(cuò)的效果访忿。不過如今隨著推薦系統(tǒng)門檻的降低瞧栗,個(gè)性化推薦已成了廣告系統(tǒng)的主流手段。
廣告系統(tǒng)的組成
我們現(xiàn)在想想一個(gè)廣告系統(tǒng)所需要的最基礎(chǔ)的組成部分海铆,首先需要能夠投放廣告與展現(xiàn)廣告:
廣告物料庫(Ad Inventory):廣告主根據(jù)系統(tǒng)要求提供的廣告素材迹恐,比如圖片和文案等,通過廣告主后臺(tái)進(jìn)行投放
廣告投放系統(tǒng)(Ad Serving System):接受前端廣告位的請(qǐng)求卧斟,計(jì)算出最適合的廣告并返回給前端
但是殴边,廣告肯定不能免費(fèi)投放的憎茂,因此,廣告系統(tǒng)需要跟廣告主進(jìn)行費(fèi)用統(tǒng)計(jì)和收費(fèi)锤岸。在線廣告的收費(fèi)方式通常有以下幾種:
CPM(Cost Per Mille):按千次展示收費(fèi)竖幔,廣告被瀏覽1000人次產(chǎn)生一筆費(fèi)用。
CPC(Cost Per Click):按點(diǎn)擊收費(fèi)是偷,廣告被用戶點(diǎn)擊一次產(chǎn)生一筆費(fèi)用拳氢。
CPA(Cost Per Action):按用戶行為收費(fèi),比如用戶點(diǎn)擊廣告之后進(jìn)行了一次應(yīng)用下載/網(wǎng)站注冊(cè)后產(chǎn)生一筆費(fèi)用
CPS(Cost Per Sale):按銷售額收費(fèi)蛋铆,對(duì)廣告引導(dǎo)的商品銷售額進(jìn)行一定比例的提成馋评。
加上收費(fèi)功能后,廣告系統(tǒng)就應(yīng)該增加以下部分:
廣告計(jì)費(fèi)系統(tǒng):根據(jù)廣告位投放情況的反饋以及收費(fèi)類型刺啦,進(jìn)行計(jì)費(fèi)統(tǒng)計(jì)留特,若當(dāng)天產(chǎn)生的費(fèi)用已經(jīng)達(dá)到廣告主設(shè)定的預(yù)算,則需要通知投放系統(tǒng)進(jìn)行廣告下線玛瘸,這樣既避免廣告主預(yù)算超標(biāo)磕秤,也避免流量被浪費(fèi)。
廣告結(jié)算系統(tǒng):根據(jù)計(jì)費(fèi)系統(tǒng)產(chǎn)生的數(shù)據(jù)進(jìn)行費(fèi)用賬單捧韵,并由廣告主進(jìn)行繳費(fèi)。
廣告系統(tǒng)的技術(shù)要求
投放系統(tǒng):響應(yīng)時(shí)間
一個(gè)典型的廣告投放系統(tǒng)主要由三個(gè)部分組成:索引汉操、CTR模塊再来、投放服務(wù)。其中投放服務(wù)處理前端傳過來的請(qǐng)求磷瘤,把請(qǐng)求轉(zhuǎn)化為查詢條件到索引中進(jìn)行檢索芒篷,再把檢索結(jié)果通過CTR模塊進(jìn)行排序(Ranking),最后數(shù)據(jù)最終結(jié)果并記錄投放日志采缚。其中针炉,CTR模塊根據(jù)實(shí)時(shí)計(jì)算的eCPM對(duì)廣告檢索結(jié)果進(jìn)行從大到小的排序。
關(guān)于eCPM:全稱expected cost per mile扳抽,意思是每進(jìn)行一千次投放的預(yù)期收入篡帕。具體計(jì)算方法為eCPM = CTR(點(diǎn)擊率) * bid(出價(jià)),CTR可以理解為用戶點(diǎn)擊該廣告的概率贸呢,因此CTR與bid相乘就是這一次投放的預(yù)期收入镰烧,廣告業(yè)務(wù)希望收入最大化,因此CTR的計(jì)算就是核心中的核心楞陷。
對(duì)任何To C的服務(wù)來說怔鳖,響應(yīng)時(shí)間都是最重要的技術(shù)指標(biāo),對(duì)于一個(gè)廣告投放系統(tǒng)尤為如此固蛾。因?yàn)槊襟w數(shù)量會(huì)不斷增長结执,因此廣告投放系統(tǒng)是具有高并發(fā)度陆、低延遲的特點(diǎn)。常規(guī)的分布式Web系統(tǒng)架構(gòu)都可以應(yīng)用在上面献幔,另外通常還會(huì)使用提高檢索效率的Lucene相關(guān)組件(如Solr或ElasticSearch等)作為索引部分懂傀。
計(jì)費(fèi)系統(tǒng):數(shù)據(jù)實(shí)時(shí)
計(jì)費(fèi)系統(tǒng)的構(gòu)成不會(huì)特別復(fù)雜,它是前端廣告位與投放系統(tǒng)之間的橋梁斜姥,核心任務(wù)是保證廣告投放在預(yù)算范圍之內(nèi)鸿竖,盡可能地避免發(fā)生超投——即廣告投放的次數(shù)與相應(yīng)費(fèi)用超出廣告主預(yù)設(shè)的范圍。
為了保證這一點(diǎn)铸敏,我們要求計(jì)費(fèi)系統(tǒng)應(yīng)重點(diǎn)保證數(shù)據(jù)的實(shí)時(shí)性缚忧,具體環(huán)節(jié)包括廣告位展示信息的埋點(diǎn)數(shù)據(jù)收集、處理與費(fèi)用計(jì)算等杈笔。從用戶查看或點(diǎn)擊一次廣告到進(jìn)行廣告下線反饋闪水,這一過程應(yīng)保持分鐘級(jí)以內(nèi)的延遲。由于廣告位曝光或用戶點(diǎn)擊行為的數(shù)據(jù)量相當(dāng)龐大蒙具,目前流行的方案是使用Kafka提供日志消息分發(fā)球榆。
聰明的你可能會(huì)發(fā)現(xiàn),對(duì)于CPC廣告來說禁筏,即使計(jì)費(fèi)系統(tǒng)及時(shí)發(fā)出下線反饋持钉,但那些已經(jīng)投放出去、尚未產(chǎn)生點(diǎn)擊的廣告仍然會(huì)可能產(chǎn)生超投篱昔。因此超投只能控制在一定范圍之內(nèi)每强,并不能完全杜絕。廣告系統(tǒng)到達(dá)一定規(guī)模州刽、超投率超出可以接受的范圍之后空执,計(jì)費(fèi)系統(tǒng)應(yīng)具備預(yù)測(cè)消耗的能力,即每進(jìn)行一次投放穗椅,計(jì)費(fèi)系統(tǒng)預(yù)測(cè)出可能產(chǎn)生的費(fèi)用辨绊,并提前進(jìn)行費(fèi)用計(jì)算、對(duì)預(yù)測(cè)預(yù)算將被耗盡的廣告計(jì)劃在點(diǎn)擊尚未發(fā)生之前就先進(jìn)行下線操作(筆者曾經(jīng)翻譯過一篇文章匹表,介紹Pinterest廣告團(tuán)隊(duì)如何構(gòu)建消耗預(yù)測(cè)系統(tǒng)门坷,感興趣的話可查看這里)。另外桑孩,對(duì)預(yù)算將近的廣告計(jì)劃拜鹤,投放系統(tǒng)也應(yīng)該降低投放頻率,使預(yù)算極可能平滑地達(dá)到上限流椒。
結(jié)算系統(tǒng):數(shù)據(jù)準(zhǔn)確
結(jié)算系統(tǒng)與計(jì)費(fèi)系統(tǒng)雖然都提供了費(fèi)用計(jì)算的功能敏簿,但側(cè)重點(diǎn)不同。結(jié)算系統(tǒng)提供的是廣告平臺(tái)與廣告主之間費(fèi)用結(jié)算服務(wù),關(guān)注的是數(shù)據(jù)準(zhǔn)確度惯裕;而計(jì)費(fèi)系統(tǒng)則重點(diǎn)關(guān)注的是計(jì)費(fèi)實(shí)時(shí)性温数,其根本目標(biāo)是保證流量的有效利用。
結(jié)算系統(tǒng)一般會(huì)以離線數(shù)據(jù)為基礎(chǔ)進(jìn)行計(jì)算蜻势,首先撑刺,這樣可以以較少的成本保證數(shù)據(jù)完整性,因?yàn)槿绻裼?jì)費(fèi)系統(tǒng)那樣一來實(shí)時(shí)流計(jì)算握玛,就不可避免地要面臨服務(wù)可用性問題够傍。如上文所說,假如流計(jì)算服務(wù)宕機(jī)挠铲,對(duì)計(jì)費(fèi)系統(tǒng)來說最多也就是造成流量的浪費(fèi)冕屯,但對(duì)結(jié)算系統(tǒng)來說,則意味著廣告平臺(tái)利益的無辜損失拂苹。其次安聘,廣告結(jié)算系統(tǒng)通常會(huì)引入“反作弊”的功能(比如一個(gè)用戶短時(shí)間內(nèi)多次點(diǎn)擊,只收取一次點(diǎn)擊的費(fèi)用)瓢棒,基于離線數(shù)據(jù)浴韭,便于引入更先進(jìn)(可能也意味著耗時(shí)更高,這與計(jì)費(fèi)系統(tǒng)的要求相悖)的反作弊算法脯宿,以保障廣告主的權(quán)益念颈。
總結(jié)
* 廣告系統(tǒng)的目標(biāo)是“把合適的內(nèi)容推送給合適的受眾”
*?廣告系統(tǒng)的核心部分由投放、計(jì)費(fèi)连霉、結(jié)算三個(gè)子系統(tǒng)組成
*?投放舍肠、計(jì)費(fèi)、計(jì)算系統(tǒng)各自的技術(shù)關(guān)注點(diǎn)不同:投放系統(tǒng)關(guān)注請(qǐng)求響應(yīng)時(shí)間窘面,計(jì)費(fèi)系統(tǒng)關(guān)注數(shù)據(jù)實(shí)時(shí)性,結(jié)算系統(tǒng)關(guān)注數(shù)據(jù)準(zhǔn)確性