聯盟廣告平臺架構及實踐

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"導讀:"},{"type":"text","text":"隨着大數據的快速發展,大數據應用已經融入各行各業,在很多場景中得到了商業化實踐。今天和大家分享下58同城聯盟廣告平臺架構及實踐。主要包括:58聯盟廣告SSP媒體平臺、投放平臺、程序化創意等核心模塊的設計和實現,以及對聯盟業務的思考與展望。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"聯盟廣告平臺簡介"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"1. 業務概述"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"58聯盟廣告平臺主要是以58站內的廣告主爲基礎並結合站外流量,幫助58站內廣告主獲取站外潛在用戶,從而實現流量變現。流量獲取主要通過SSP和DSP這兩種方式。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/eb\/eb6b4306acb2a63da3b2ea1d7dc5409e.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"聯盟SSP平臺可直接與媒體對接,直接在媒體上展示投放的廣告。DSP是通過投放平臺(例如百度SEM、騰訊廣點通等)投放到媒體上展示廣告。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"2. 業務架構"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/c9\/c929ef3083a7c053ecc0b3fa43fe509d.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"主要介紹以下四個模塊:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"① 同城寶SSP"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"同城寶SSP主要是服務於媒體方(例如公衆號,blog站點),媒體方可以在此註冊廣告位,幫助媒體方實現流量變現。核心模塊主要包括"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"媒體管理、廣告位管理、廣告管理、媒體報表、廣告位報表、財務結算、流水記錄等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"② 直投平臺"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"直投平臺是基於一些媒體平臺(百度SEM、廣點通等)的 Marketing API開發的一個平臺,主要是更高效的進行廣告投放,幫助我們更好的運營。核心模塊主要包括統一投放網關、程序化創意生成、OCPX、賬號管理、物料管理、報表服務、優化工具(批量操作、程序化調價等)等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"③ 聯盟DSP"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"主要與一些主流的ADX對接,服務於58運營,將運營創建的廣告投放到媒體上。詳細介紹見下文。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"④ 創意平臺"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"其實廣告很重要的一部分就是創意,廣告位的規格各種各樣,比較碎片化。創意平臺提供通過程序化工具生成創意圖片、標題、描述等,來提高創意製作效率和效果。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"媒體平臺"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"1. 業務介紹"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"媒體平臺主要服務於媒體方的,媒體方可以在此平臺註冊公司、註冊媒體和註冊廣告位,獲得投放鏈接、js或api,然後部署到自己的媒體上,從而通過提供廣告位進行變現。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/37\/377179f0ebfb36e33d11db81e56ccc47.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/99\/990fec9346d54409c6e0e23460c816c5.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"2. 對接模式"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對接模式目前主要支持固定鏈、標籤雲、快捷圖標和 API。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/e9\/e9894ba330574fc5dc60fa0f331892e4.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"3. 架構"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/17\/1759d9a24449bd372a2a1b5d30ab7eeb.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"① 媒體方先在SSP平臺上註冊好廣告位(包括公司、媒體和廣告位配置信息),然後獲取廣告投放鏈接、js或api接口等相關信息。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"② 媒體方將獲得的鏈接、js或api接口等信息,部署到媒體方App或站點上。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"③ 媒體方App或站點請求聯盟廣告API,會轉向到聯盟ADX,從而對接58站內廣告庫(包括房產、招聘、二手車、黃頁等),對廣告庫內廣告進行召回並在媒體方上投放廣告。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"④ 媒體方App或站點上的廣告被展示或點擊,會向聯盟監測上報請求,最後數據落入聯盟數據平臺。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"⑤ 根據最終廣告效果,基於分成或服務費的模式,媒體方獲取提供廣告位的收入。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"4. 效果評估"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/c3\/c3365dc42fcdf2833fcc3a8c85e38bfd.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"關於如何評估每個媒體的廣告效果,主要有以下三種方式,目前58聯盟主要使用Cookie方式。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"① url"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"通過URL透傳的方式,一直向下遊傳遞廣告來源參數,但維護成本高,中途容易丟失。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"② 日誌追溯"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"通過記錄用戶行爲日誌的方式進行離線歸因的方式。處理用戶行爲日誌是通過用戶SessionId 串聯用戶的所有行爲,並按照時間戳進行排序,獲取該用戶第一次進入系統URL,只需用戶一跳帶上來源標識即可獲取用戶的來源信息。缺點是工程層面無法實時歸因。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"③ Cookie"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"基於Cookie傳輸,維護成本低,各個系統可以從Cookie中實時獲取用戶信息,支持實時歸因。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"5. 劫持防範"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/9d\/9d23f9a395f96e841bf5709088af2fde.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"流量劫持通常通過DNS劫持或路由器劫持的方式,將正常訪問58的用戶訪問鏈接重定向爲302,然後在訪問鏈接後面加上一些參數。可以採用使用全局HTTPS、手動指定DNS和HTTPS-DNS解決流量劫持。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"投放平臺"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"1. 投放平臺(MKT API)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於線上主流的投放平臺衆多,如百度搜索、百度信息流、神馬搜索、360搜索、頭條搜索、騰訊廣點通、頭條信息流等,每個投放平臺都擁有自己的私有流量,如果想要全網投放廣告,需要對接平臺非常之多,運營營銷人員維護起來非常繁瑣。MKT API投放平臺主要是整合各投放平臺,降低維護難度,減少運營成本。"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/95\/950bca4831e59b75ee5fe5f16a28e8b0.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"2. 投放平臺 ( MKT API ) 架構"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/04\/042d8942479940413d739b6949e9abba.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Marketing API模式存在的問題:"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Marketing API投放平臺的模型依賴媒體側用戶畫像,更適合拉新場景,但在RT場景無法充分利用廣告主側畫像和模型;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"無法按一次曝光精細化購買流量(頻控、跨屏聯動);"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"策略模型、投放數據、投放規則散落在各個外部DSP,難以沉澱"}]}]}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/c2\/c2a1bfca655127fd753be279ecab0345.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"3. 投放平臺 ( DSP )"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/47\/4756e8b3665f6220b31525fd1ef6999b.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"廣告競價流程:"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"通過ADX(包含外部廣告媒體(如廣點通、今日頭條ADX) 和聯盟SSP平臺的ADX)與我們聯盟DSP平臺對接,媒體方發起廣告請求時,ADX會將廣告請求發送到DSP,DSP收到請求後會做簡單的參數映射處理後,然後將請求轉發給DSP廣告檢索服務,檢索服務會從聯盟DMP平臺獲取用戶的畫像,然後根據用戶的偏好從廣告庫中檢索廣告,通過預算控制或CPM報價服務預估廣告的出價返回給ADX,ADX競價成功、廣告展示或點擊都會上報到監測接口。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"廣告所產生的數據(包括出價、獲勝、展示、點擊等)最終均落在數倉中。實時數據會基於Flink框架進行數據處理加工,最終存儲在Druid或ES中。離線主要基於Kylin預計算進行OLAP多維分析"}]}]}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"4. 投放平臺 ( DSP ) 性能優化"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"RTB實時競價過程對性能要求非常高,對接外部ADX要求在70ms內返回競價結果,我們58聯盟內部的性能要求是在50ms之內返回競價結果。由於我們DSP對接多方ADX,QPS達到了10萬左右。如何提高我們系統性能呢?我們目前採用異步和延時這兩種方式優化系統性能。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"異步"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"異步一般適用IO比較密集、請求處理時間過長、線程數較多、高負載等場景。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/ab\/ab594646d1d96fc1e4f97686c7668ca6.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"起初我們使用的是阻塞線程模型,遇到一些IO操作(如查詢Redis,調用其他服務等),線程處於阻塞狀態,導致一個線程只能處理一個請求,想要提高系統處理的請求數,只能通過增加線程數類解決。線程數過大會導致線程切換開銷過大,內存佔用較大。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們採用EventLoop-Thread線程處理多個請求,減少鎖的開銷,避免線程爆炸問題。在代碼層面採用Future\/Promise解決異步回調開發繁瑣,代碼結構複雜,嵌套較多的問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/38\/384254bc14262eccbca975171ba23b1e.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"異步與同步壓測結果對比:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/c2\/c2b16fde3b1569918ae7bdda25cdc84c.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"延時"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們的DSP平臺主要是基於Java生態的,GC問題會導致性能下降,對廣告系統影響較大。這裏介紹下我們關於GC遇到的一個問題及解決方案。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/4a\/4a774303ee02cfe84110710c97b094c8.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"背景:在DSP競價時,需要獲取當前用戶所在的城市信息,之前我們是通過IP來查詢用戶所在城市,並將IP和CityId(城市信息)的對應關係使用LRU緩存起來。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"問題:上線以後,發現每2小時出發一次FullGC(Old區內存爲2G),造成600ms STW。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"分析:發現我們線上服務TP99在80ms左右,理論上應該不會有存活對象進入老年代,但是發現每次YoungGC有2M左右,發現主要是LRU緩存中對象進入Old區。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"解決方案:我們之前LRUCache的對象數量將近1600w多個,進行GC時JVM會掃描存活的對象,這將產生1000多萬次對象掃描的開銷。爲了避免這個問題,我們採用Free GC設計,通過聲明一個long類型的三維數組(前32位代表時間戳,後32位地域id),使用一塊固定內存,這樣在GC時只掃描一個對象。另外在凌晨4:00手動觸發System.gc(),避免對系統白天運行的影響。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"效果:FullGC間隔從之前的2h變成30h;TP99 從80ms降低到50ms;MEAN從13ms 降低到 11ms。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"5. 投放平臺 ( DSP ) 索引設計"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"目前DSP平臺主要是對58內部運營開放,推廣數並不是很大。我們目前採用一個主分片和多個從分片(主要是分攤查詢流量),爲保證索引可用性,我們採用了雙索引設計。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/d2\/d2105e8b06aaa804729ee65b9248d0e6.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"6. 投放平臺 ( DSP ) TB級競價緩存"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於一般URL的長度有限制,攜帶的信息有限,我們採用兩級Cache,將競價信息,如召回策略、排序策略、預估CTR等中間環節數據寫到到緩存中,在獲勝、展示和點擊時從緩存中獲取數據。"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/89\/89d0092fce8bfb7ba086243d2857782d.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"7. 投放平臺 ( DSP ) 競價引擎"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/19\/1975ffb9d2f45b16c93b8dec27730c5e.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"競價引擎包含流量優選、召回、智能預算、過濾、CPM報價策略和創意展示模塊。"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"流量優選:基於反作弊手段和投放效果過濾掉一部分流量,從而減輕後鏈路數據計算處理的壓力。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"召回:基於廣告排期人羣定向媒體定向等規則從索引中召回廣告。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"智能預算:基於預算策略(快速消耗和平滑消耗),快速消耗則正常出價,平滑消耗使用pCTR出價策略。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"過濾:基於頻控策略,包含DSP內部頻控策略和ADX聯合頻控策略。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"報價策略:支持CPM和CPC兩種報價模式,均提供固定模式和基於ROI調控模式報價。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"創意展示:包含個性化創意和創意優選功能,個性化創意根據用戶畫像特徵示,創意優選根據模板基於歷史效果選擇最優進行展示。"}]}]}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"8. 投放平臺(DSP) OLAP多維分析"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"DSP系統目前採用Lambda架構,以離線數據爲準,保證數據的穩定性,歷史數據可追溯。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/a8\/a886dbddfa58ec965fe7b0c95cdd0127.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"9. 用戶畫像標籤體系"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"標籤體系主要是基於業務線構建的,上層支持DSP、ADX、創意、落地頁動態路徑等應用。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/e1\/e11c66d9c18ed2c7ba63685b4e18000e.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"程序化創意"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於站外媒體提供的廣告位規格碎片化、創意長期投放會導致CTR下降需要定期更新和人工製作上傳效率低,站內存在大量低質圖片,導致用戶體驗不友好等問題,基於這些問題我們開發了程序化創意平臺。建設程序化創意平臺需要面臨如何程序製作符合美學的圖片和如何應對數據量和檢索量過大的挑戰。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/1d\/1dbfdaa15da1e75d2eb13576b3ed11b5.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"1. 圖片渲染"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/e4\/e40fbe9f4662cbe8dfaf136732300bed.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"2. 架構"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/3d\/3d81cc63baf6e7a473691c8bb3858187.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"提供服務發佈API,供DSP投放平臺、站內廣告系統等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"創意圖片渲染引擎(Creative-Builder),提供圖片自動化生成,包含特徵抽取、配置組裝、規則優選、圖片渲染等模塊。從廣告中抽取一些核心元素(如標題、標籤等),根據用戶的需求配置檢索合適的模板然後進行組裝,基於標籤、配色等組合策略優選出合適的素材,然後進行渲染,並上傳到CDN,同時同步到創意索引中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"創意索引會基於CTR預估將多張創意圖片針對不用用戶進行優選,創意的展示點擊數據會回傳到我們平臺,形成數據鏈路閉環。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"3. 索引設計"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"程序化創意索引設計採用的是58自研雲搜體系,當shard數量過多時,會導致讀寫擴散,增加CPU和IO額外開銷,產生性能瓶頸。針對上述問題,我們對路由策略進行優化,儘量將查詢路由到較少的分片上。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/65\/65fe3c26cc97c20348d05c57859bc5c1.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"route-key設計:58大多數廣告是城市加類別構成,很少有跨城市或類別的廣告,基於這種業務場景,我們在路由設計時採用一級城市加二級類別作爲route-key,這樣可以保證95%的請求同一個route-key,僅查詢1個分片即可。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"route-strategy:根據route-key的hash值取模來指定soltId,另外還需人工配置路由表,配置中會記錄每個分片和soltId的對應關係,並將配置記錄在Zookeeper中。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/36\/36f78a7c2101d41d0cd6425ee3ea5777.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"路由策略僅由 IndexBuilder和Router(Redis) 控制,索引擴容時只需修改RoutetConfig,增量數據就會使用新的路由策略構建索引,再針對待遷移slot觸發重建即可,從而解決了索引擴容和重建的問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/f5\/f5e3d82abb6297334e2746c84590afdf.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"4. 展望"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/17\/17323c7639aad94a02ee9fa0eddcd4f8.png","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"嘉賓介紹:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"曲瑤,58同城商業產品技術部架構師。2014年加入58同城,主要負責聯盟廣告平臺的研發和優化工作。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"本文轉載自:DataFunTalk(ID:datafuntalk)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"原文鏈接:"},{"type":"link","attrs":{"href":"https:\/\/mp.weixin.qq.com\/s\/AZG6ll1xXEzXSCPfUkH3Ag","title":"xxx","type":null},"content":[{"type":"text","text":"聯盟廣告平臺架構及實踐"}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章