專利名稱:一種廣告投放方法及系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及互聯(lián)網技術領域,尤其涉及一種互聯(lián)網廣告投放方法及系統(tǒng)。
背景技術:
大型互聯(lián)網的廣告投放面臨著如下幾個主要問題一是廣告并發(fā)請求量大,往往平均每秒鐘都要對數萬甚至十萬次廣告請求作出響應。二是廣告的定投方式(即指定廣告在某種條件下投放)繁多,常見的定向投放方式有視頻組定投(指定的廣告只能投到某一組指定的視頻中)、人群定投(指定的廣告只能投到某一類人群中)、地區(qū)定投、關鍵字定投,還可以進行多定投方式組合投放,如地區(qū)+視頻組定投、地區(qū)+分類+關鍵字定投等 ’另夕卜,以客戶對投放次數的限制來看,還有N+投放(即限制每個用戶在指定的時間段內能觀看的廣告次數)方式和普通的非N+投放方式。此外,還可能需要根據客戶的重要性將客戶劃分為若干個等級,高等級客戶的廣告應該保證優(yōu)先于低等級客戶的廣告投放。 常見的廣告系統(tǒng),其投放定向條件往往比較簡單,如僅僅按關鍵字或網頁分類(頻道)等很少的幾個定向條件來進行投放,只需要設計若干個簡單的哈希表、列表或數組等數據結構來緩存廣告數據,便能夠滿足廣告投放的要求;然而當廣告定向投放的條件非常多、廣告之間又有各種投放優(yōu)先級的要求時,如果仍然使用簡單的數據結構來緩存數據,往往會在廣告匹配的時候作過多的冗余查找,浪費服務器資源,廣告投放效率將會受到極大的影響,此外,如果廣告投放系統(tǒng)的系統(tǒng)結構設計不合理,廣告投放效率會隨著廣告數據量的增大而成倍降低,廣告的響應時間也會不斷地增大,從而導致用戶等待時間過長,影響用戶感受。
發(fā)明內容
有鑒于此,本發(fā)明的主要目的在于提供一種廣告數據的緩存方法及系統(tǒng),用于改進現有廣告系統(tǒng)結構,提高廣告投放效率,減小用戶等待時間。為達到上述目的,本發(fā)明的技術方案是這樣實現的—種廣告投放方法,其特征在于,該方法包括從廣告數據庫服務器中獲取廣告數據,將獲取的廣告數據緩存在后臺管理服務器中;前端廣告投放服務器從后臺管理服務器的緩存中讀取廣告數據并在本地緩存;所述后臺服務器和前端投放服務器以投放條件樹的樹形數據結構來緩存所述廣告數據,投放條件樹的每一級對應一級廣告投放條件的優(yōu)先級,每個分支對應一種投放條件,最底層葉子節(jié)點為符合上層節(jié)點所指示投放條件的廣告素材標識的集合;當前端投放服務器接收到廣告請求后,根據廣告請求參數在所述投放條件樹中匹配滿足投放條件的廣告,并返回廣告代碼給請求方。進一步地,所述匹配滿足投放條件的廣告,并返回廣告代碼給請求方的方法具體為依據廣告請求攜帶的參數確定各個優(yōu)先級對應的投放條件;
以深度遍歷算法在所述投放條件樹中匹配所確定的各個優(yōu)先級對應的投放條件,在遇到葉子節(jié)點時,從葉子節(jié)點所包含的廣告素材標識的集合中獲取符合投放條件的廣告素材標識;根據所獲取的廣告素材標識獲取具體的廣告素材詳細參數,將廣告素材詳細參數與廣告請求中的相關參數一起組織成廣告代碼,將廣告代碼返回給請求方。進一步地,所述后臺服務器構造投放條件樹的方法具體為使用哈希圖HashMap來構造所述投放條件樹中除葉子節(jié)點之外的每一級節(jié)點,通過HashMap鍵值對中的key來反映不同的投放條件,通過HashMap鍵值對中的value來鏈接下一級HashMap,每一級HashMap對應一級廣告投放條件優(yōu)先級;最后一級HashMap鍵值對中的value以列表數據類型裝載符合相同投放條件的所有廣告素材標識。 本發(fā)明還提供一種廣告投放系統(tǒng),所述系統(tǒng)包括廣告數據庫服務器,用于存儲與廣告投放相關的廣告數據;后臺服務器,用于從廣告數據庫服務器中獲取廣告數據,將獲取的廣告數據緩存在本地緩存中;前端投放服務器,用于從后臺管理服務器的緩存中讀取緩存的廣告數據并在本地緩存中進行緩存;接收廣告請求,根據廣告請求參數在本地緩存的廣告數據中匹配滿足投放條件的廣告,并返回廣告代碼給請求方;
所述后臺服務器和前端投放服務器以投放條件樹的樹形數據結構來緩存所述廣告數據,投放條件樹的每一級對應一級廣告投放條件的優(yōu)先級,每個分支對應一種投放條件,最底層葉子節(jié)點為符合上層節(jié)點所指示投放條件的廣告素材標識的集合;所述前端投放服務器基于所述投放條件樹進行廣告匹配。進一步地,所述前端投放服務器包括緩存模塊,用于從后臺管理服務器的緩存中讀取緩存的廣告數據并在本地緩存中進行緩存;匹配模塊,用于依據廣告請求攜帶的參數確定各個優(yōu)先級對應的投放條件,以深度遍歷算法在所述投放條件樹中匹配所確定的各個優(yōu)先級對應的投放條件,在遇到葉子節(jié)點時,從葉子節(jié)點所包含的廣告素材標識的集合中獲取符合投放條件的廣告素材標識;反饋模塊,用于根據所獲取的廣告素材標識獲取具體的廣告素材詳細參數,將廣告素材詳細參數與廣告請求中的相關參數一起組織成廣告代碼,將廣告代碼返回給請求方。進一步地,所述廣告數據庫服務器使用分布式網絡緩存工具將獲取的廣告數據緩存在后臺管理服務器中;所述前端廣告投放服務器使用分布式網絡緩存工具從后臺管理服務器的緩存中讀取廣告數據并在本地緩存。進一步地,所述系統(tǒng)還包括負載均衡服務器HaproxyServer,位于在前端投放服務器CastServer集群和用戶終端之間,用于依據負載均衡策略向CastServer集群中的不同CastServer分發(fā)廣告請求。本發(fā)明采用后臺管理服務器MServer和前端投放服務器CastServer集群兩級廣告數據緩存結構,提高了廣告數據處理效率;廣告數據緩存采用樹形數據結構來反映不同的投放條件及投放條件的優(yōu)先級,前端投放服務器定時刷新本地緩存的廣告數據,基于廣告投放條件樹查找滿足投放條件的廣告,廣告投放條件樹的匹配時間復雜度相當于線性時間復雜度,相比傳統(tǒng)的廣告匹配方法大大提高了匹配效率,減少服務器的運算量。
圖I為本發(fā)明實施例提供的廣告投放系統(tǒng)功能模塊示意圖;圖2為本發(fā)明實施例提供的投放條件樹結構示意圖;圖3為本發(fā)明實施例提供的投放條件樹的裝載過程流程圖。
具體實施例方式為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚明白,以下舉實施例并參照附圖,對本發(fā)明進一步詳細說明。
圖I為本發(fā)明實施例提供的一種廣告投放系統(tǒng)的結構圖,該系統(tǒng)包括廣告數據庫服務器AdDBServer,用于存儲與廣告投放相關的廣告數據,包含客戶數據、合同數據、投放條件、廣告素材等。后臺管理服務器MServer,用于定時從廣告數據庫服務器中提取廣告數據,生成投放條件樹數據對象,并在本地緩存所生成的投放條件樹數據對象"Server還可用于廣告預定、排期、素材設置等一系列管理功能。前端廣告投放服務器CastServer,用于定時從后臺管理服務器提取緩存的廣告投放條件樹數據對象并在本地進行緩存,在接收到用戶終端發(fā)送的廣告請求時,基于所述廣告投放條件樹查找滿足投放條件的廣告,并返回廣告代碼給請求方。廣告素材服務器IdeaServer,用于存放實際要播放的廣告素材,以及在接收到用戶終端發(fā)起的獲取實際播放的廣告素材的請求時,向用戶終端返回實際播放的廣告素材。用戶終端接收到前端廣告投放服務器返回的廣告代碼后,通過解析代碼獲得實際需要的廣告素材標識,然后向廣告素材服務器發(fā)起獲取實際播放的廣告素材的請求,廣告素材服務器依據請求返回相應的廣告素材。所述廣告素材可以為視頻、flash、圖片等。為了應對大規(guī)模的并發(fā)的廣告請求,減輕數據庫服務器的負載,本發(fā)明采用兩級數據緩存機制,并且在后臺管理服務器MServer和前端投放服務器CastServer上使用分布式網絡緩存工具(如Memcache、redis等)來進行數據的緩存。Mserver定時從廣告數據庫服務器AdDBServer中取得待投放的廣告數據,生成投放條件樹數據對象,然后通過分布式網絡緩存工具提供的寫入set操作功能將所生成的投放條件樹數據對象寫入本機的緩存中;CastServer會定時通過分布式網絡緩存工具提供的獲取get操作從MServer的緩存中讀取緩存數據,裝載到本機緩存中。所述后臺服務器和前端投放服務器對所述廣告數據進行緩存時采用樹形數據結構即投放條件樹,來反映不同的投放條件及投放條件的優(yōu)先級,投放條件樹的每一層對應一級廣告投放優(yōu)先級,每個分支對應不同的投放條件,具體的,本發(fā)明使用哈希圖HashMap來構造所述投放條件樹中除葉子節(jié)點之外的每一級節(jié)點,通過HashMap鍵值對中的key來反映投放條件,通過HashMap鍵值對中的value來鏈接下一級HashMap,每一級HashMap對應一級廣告投放優(yōu)先級;
所述投放條件樹的最底層葉子節(jié)點為符合上層節(jié)點所指示投放條件的廣告素材標識的集合,用于存放投放條件相同的廣告素材標識,所述集合可通過列表List、數組、鏈表等數據類型來表達。優(yōu)選地,為了保證高效投放,前端投放服務器CastServer和用戶終端之間掛接了負載均衡服務器HaproxyServer,當用戶在網站上的某個行為(如打開一個視頻播放頁)觸發(fā)了一次廣告請求時,該請求會首先被HaproxyServer得到,然后HaproxyServer會通過一定的策略將該請求轉發(fā)給多個CastServer中的一臺,這臺CastServer再到其本機的緩存中進行廣告匹配,若找到合適的廣告,則向請求方返回要投放的廣告代碼。本發(fā)明優(yōu)選實施例中,通過多級的哈希圖HashMap和列表List來構造投放條件樹數據對象,廣告投放系統(tǒng)中待投放的廣告數據就是以這種結構存放在緩存中,其結構以java風格可描述如下HashMap〈String, HashMap〈String,…,HashMap〈String, List<String>>... >>·根據上面的描述可以看出,該數據結構并非完全固定不變的,會因廣告投放系統(tǒng)所要求支持的投放功能而有所不同。其中省略號內表不內部有若干個嵌套的HashMap結構。HashMap是以鍵值對(key-value)方式來存儲數據的,它以put (key, value)方法存入鍵值對,以get (key)方法取得value,其優(yōu)點是可以在線性時間復雜度內完成數據查找,而不必在每次查找時都遍歷整個集合。最內層是List對象,它則不僅提供了隨機訪問列表中指定位置的元素,還可以add (value)添加元素,以remove (index)方法刪除指定位置的元素。所述投放條件樹的構造方法如下步驟I、確定廣告有哪些具體的投放要求;例如視頻廣告投放優(yōu)先級別的要求為A、廣告定投方式為最優(yōu)先考慮視頻組定投廣告優(yōu)先級最高、人群定投廣告次之、其它定投方式再次之,其它廣告須滿足長廣告(目前大于7秒的廣告被視為長廣告,否則為短廣告)只投在長視頻中、短廣告只投在短視頻中;B、是否N+廣告為次優(yōu)先考慮N+廣告優(yōu)先于非N+廣告進行投放;C、客戶級別為再次優(yōu)先考慮客戶級別有V(VIP客戶)、A、B、C、D、E等,級別越高,投放順序越靠前;D、定投方式和是否N+限制、客戶級別等都相同的情況下,所做具體投放限制條件越嚴苛,越優(yōu)先投放,如定投北京地區(qū)的電視劇的廣告,要優(yōu)先于僅僅定投電視劇的廣
生P=I ;E、相同的投放條件下按千人成本(Cost Per Millc, CPM)投放的廣告,優(yōu)先于按全流量投放的廣告。步驟2、根據廣告投放系統(tǒng)具體的功能需求來確定投放條件樹的具體結構,基本原則是每一種廣告投放條件優(yōu)先級別要求占用一級HashMap,每一級的HashMap中由鍵值對(即key-value對)構成,通過HashMap的鍵值對中的key來反映不同的投放條件,通過HashMap鍵值對中的value來鏈接下一級HashMap,直到所有優(yōu)先級別的HashMap創(chuàng)建完畢,最后一級HashMap鍵值對中的value則存放一個列表List數據對象,List中存放的是投放條件相同的廣告素材ID的集合,廣告素材ID是一個廣告素材的唯一標識。
例如,基于步驟I中所給的視頻廣告投放優(yōu)先級別的要求,應該使用“5層HashMap+1層List”來構造所述投放條件樹,以java語言風格描述為HashMap<String, HashMap〈String, HashMap<String, HashMap<String,HashMap〈String, List>>>>>CondTree ;所構造的投放條件樹的具體結構可參見附圖2的示例。步驟3、上述數據結構中最內層的List中存放的僅僅是廣告素材的ID,實際進行廣告投放的時候需要根據廣告素材的ID取得具體要投放的廣告的具體相關參數,如廣告素材url、曝光監(jiān)測url、點擊監(jiān)測url等相關內容。上述具體相關參數可以被組織為一個對象,然后以HashMap方式緩存起來,其結構以java風格定義為HashMap<Interger, AdEntity>adEntityMap ;
其中的key是廣告素材ID,value是一個AdEntity對象,對象中存放廣告素材url、曝光監(jiān)測url、點擊監(jiān)測url等相關內容。實際投放時,會先在步驟2中所構造的投放條件樹CondTree對象中進行廣告匹配,取得一個合適的廣告素材ID,然后再根據這個ID到adEntityMap中取得具體的廣告素材詳細參數,這些參數與用戶請求的url中的相關參數一起被組織成廣告代碼,然后返回給播放器,播放器負責處理后續(xù)的廣告展現。當從廣告數據庫中取得一個當前處于投放期的廣告后,需要將該廣告裝載到上述投放條件樹中。以下基于上述投放條件樹的構造方法,舉實例描述廣告投放系統(tǒng)的投放條件樹的裝載過程,如圖3所示步驟101、從廣告數據庫中取得一個當前在投的廣告素材(idea)列表ideaList ;步驟102、判斷ideaList中是否還有需要處理的廣告素材,若有則從ideaList列表中取出一個廣告素材,然后執(zhí)行步驟103 ;否則結束流程;步驟103、根據當前的廣告素材的相關屬性來確定所取出的廣告素材的第一級關鍵字keyl ;keyl的值由idea的相關屬性來確定,例如若該廣告為視頻組或人群定投,則為V ;否則,如果為長廣告,則為I ;如果為短廣告,則為s ;步驟104、在投放條件樹的根節(jié)點即第一級HashMap (以下簡稱mapl)中匹配是否存在以keyl為關鍵字的下一級HashMap(以下簡稱map2),若不存在則執(zhí)行步驟105 ;否則執(zhí)行步驟106 ;步驟105、以keyl關鍵字構造map2,并將鍵值對(keyl, map2)存入mapl ;執(zhí)行語句形如map2= new HashMap〈String, HashMap〈String, HashMap〈String,HashMap〈String, List〈String>>>>>();步驟106、根據當前的廣告素材的相關屬性來確定該廣告素材的第二級關鍵字key2 ;key2同樣由idea的相關屬性來確定,例如若idea為N+廣告,則key2賦值為n ;否則,賦值為g ;步驟107、在map2中判斷是否存在以key2為關鍵字的下一級HashMap (以下簡稱map3),若不存在則執(zhí)行步驟108 ;否則執(zhí)行步驟109 ;步驟108、以key2關鍵字構造map3,并將鍵值對(key2, map3)存入map2 ;執(zhí)行語句形如map3= new HashMap〈String, HashMap〈String, HashMap〈String,List<String ();步驟109、根據當前的廣告素材的相關屬性來確定該廣告素材的第三級關鍵字key3 ;key3同樣由廣告素材的相關屬性來確定,例如其值為廣告素材所對應的廣告客戶級別,所述客戶級別的標識可通過V、A、B、C、D、E、S等字母標識;步驟110、在map3中判斷是否存在以key3為關鍵字的下一級HashMap (以下簡稱map4),若不存在則執(zhí)行步驟111 ;否則執(zhí)行步驟112 ;步驟111、以key3關鍵字構造map4,并將鍵值對(key3, map4)存入map3 ;執(zhí)行語句形如map4= new HashMap<String, HashMap<String,List<String > (); 步驟112、根據當前的廣告素材的相關屬性來確定該廣告素材的第四級關鍵字key4 ;key4同樣由廣告素材的相關屬性來確定,其值依賴于idea的具體定投方式,例如av (表示地區(qū)+視頻組定投)、ac (地區(qū)+人群定投)、p (分類定投)等;步驟113、在map4中判斷是否存在以key4為關鍵字的下一級HashMap (以下簡稱map5),若不存在則執(zhí)行步驟114 ;否則執(zhí)行步驟115 ;步驟114、以key4關鍵字構造map5,并將鍵值對(key4, map5)存入map4 ;執(zhí)行語句形如map5= new HashMap<String, List<String>> ();步驟115、根據當前的廣告素材的相關屬性來確定該廣告素材的第五級關鍵字key5 ;步驟116、在1^口5中判斷是否存在以key5為關鍵字的下一級List對象,若不存在則執(zhí)行步驟117 ;否則執(zhí)行步驟118 ;步驟117、新建List對象,并將鍵值對key5_List添加到map5中;步驟118、將當前廣告素材id添加到map5中key5對應的List所指向的廣告素材列表中,若所對應的廣告素材列表不存在,則新建后再存入。然后再次執(zhí)行步驟102。當前端投放服務器接收到廣告請求后,依據廣告請求中的參數,基于投放條件樹查找滿足投放條件的廣告,并返回廣告代碼給請求方。與上述廣告裝載步驟流程相對應的廣告匹配流程的具體步驟如下步驟201、從所接收到的廣告請求中獲取請求參數;廣告請求中的一系列參數可采用下述ReqParam對象的形式進行組織public class ReqParam (
private String vid;//視頻 id
private String s; //視頻所對應的節(jié)目id
private String ct;//視頻所屬的一級分類,如電視劇、電影、綜藝、娛樂等private String cs; //視頻所屬的二級分類,它有一個唯一對應的一級分類,如大陸劇、港臺劇、韓劇,等都是一級分類電視劇下的二級分類
private String provinceld;//當前用戶所在的省,可通過用戶請求中的ip信息
獲取
private String cityld; //當前用戶所在的城市,可通過用戶請求中的ip信息
獲取
private String uid;//上傳當前視頻的用戶的賬號(用戶id) private String t;//視頻的播放時長 private String keyword;//視頻請求所帶的關鍵字 private String partnerid;//合作方 id
}步驟202、從廣告請求的參數中獲取第一級關鍵字列表;根據廣告請求參數reqParam,獲取已排好序的當前級別map對應的keyl列表;步驟203、從第一級關鍵字列表取出一個未處理的第一級關鍵字keyl,執(zhí)行步驟204 ;若第一級關鍵字列表為空或所有的關鍵字都處理完畢仍未找到可投放的廣告,則轉到步驟218 ;步驟204、在第一級HashMap中(以下簡稱mapl)匹配keyl,獲得keyl對應的下一級HashMap (以下簡稱map2);步驟205 ;從廣告請求參數中獲取以keyl為上級關鍵字的第二級關鍵字列表;步驟206、從第二級關鍵字列表取出一個未處理的第二級關鍵字key2,執(zhí)行步驟207 ;若第二級關鍵字列表為空或所有的關鍵字都處理完畢仍未找到可投放的廣告,則返回執(zhí)行步驟203 ;步驟207、在map2中匹配key2,獲得key2對應的下一級HashMap (以下簡稱map3);步驟208 ;從廣告請求參數中獲取以key2為上級關鍵字的第三級關鍵字列表;步驟209、從第三級關鍵字列表取出一個未處理的第三級關鍵字key3,執(zhí)行步驟210 ;若第三級關鍵字列表為空或所有的關鍵字都處理完畢仍未找到可投放的廣告,則返回執(zhí)行步驟206 ;
步驟210、在map3中匹配key3,獲得key3對應的下一級HashMap (以下簡稱map4);步驟211 ;從廣告請求參數中獲取以key3為上級關鍵字的第四級關鍵字列表;步驟212、從第四級關鍵字列表取出一個未處理的第四級關鍵字key4,執(zhí)行步驟213 ;若第四級關鍵字列表為空或所有的關鍵字都處理完畢仍未找到可投放的廣告,則返回執(zhí)行步驟209 ;步驟213、在map4中匹配key4,獲得key4對應的下一級HashMap (以下簡稱map5);步驟214 ;從廣告請求參數中獲取以key4為上級關鍵字的第五級關鍵字列表;步驟215、從第五級關鍵字列表取出一個未處理的第五級關鍵字key5,執(zhí)行步驟216 ;若第五級關鍵字列表為空或所有的關鍵字都處理完畢仍未找到可投放的廣告,則返回 執(zhí)行步驟212 ;步驟216、在map5中匹配關鍵字key5,獲得key5對應的廣告素材列表adList ;步驟217、從adList的尾部依次向前查找可投放的廣告,若查到可投放的廣告,則返回對應的廣告素材標識;若adList中的某個廣告已投放完畢,則從adList中刪除該廣告的廣告素材標識;若在adList中沒有找到可投放的廣告,則執(zhí)行步驟215 (即退回到上一級map)。步驟218、返回空字符串,結束流程。以附圖2所示的投放條件樹為例,按照上述規(guī)則進行遍歷,其過程為(I)先從根節(jié)點向下查找,順序依次為klv、k2n、k3o、k4s、k5sl ;(2)到達第五層后,取得第一個列表,然后從列表末尾開始向前訪問,依次為idm、id (m-1)、…、idl ;(3)到達第一個列表的最前端后,如果仍然未找到可投放的廣告,則退回到上一層的 k5s2 ;(4)然后從k5s2再找到第二個列表,然后再從列表末尾開始向前訪問,依次為idn、id (n-1)、…、id (m+1)按上述規(guī)則,最終可完成對整個投放條件樹的遍歷。實施實例一比如某視頻網站,對其前貼廣告(即視頻播放之前播放的視頻廣告)投放的要求如下(I)要求能夠提供視頻組定投、人群定投、用戶定投、關鍵字定投、地區(qū)定投+分類(頻道)定投、分類定投等定投方式;(2)要求能夠提供對廣告的N+限制功能;(3)能夠根據客戶的重要性將客戶劃分為若干個等級,高等級客戶的廣告應該保證優(yōu)先于低等級客戶的廣告投放,但是視頻組定投和人群定投類的廣告則不必根據客戶等級來決定投放順序(4)為提高用戶體驗,短視頻(5分鐘以內的視頻)中,只能投放短前貼(時長不超過7秒鐘),長視頻(5分鐘以上的視頻)中,只能投放長前貼(時長大于7秒鐘),但是視頻組定投和人群定投類的廣告則不受此限制;
根據上述要求,可以采用“5級HashMap+1級List”的組合數據結構來完成廣告數據的緩存。下面對每一級的key的組成進行說明其中第一級的key作如下設置V :用于視頻組(vidcogroup)定投、人群定投類廣告,由于這類定投方式沒有長廣告只投長視頻、短廣告只投在短視頻,以及沒有根據客戶級別決定投放順序的,所以它們歸
為一類。I :用于只投在長視頻中的長廣告。s :用于只投在短視頻中的短廣告。第二級key含義
n:N+廣告f:非 N+廣告第三級key含義a、b、c、d、e :分別表示A、B、C、D、E級客戶的廣告,級別依次降低第四級key含義s :視頻組定投的廣告c :人群定投廣告u :用戶定投廣告(廣告只投放在指定的用戶的視頻中)k:關鍵字定投廣告p :分類定投廣告第五級key含義:由第四級key名稱+key值組成,如c3 :指定投放在白領女性(人群id為3)人群中的廣告。allpd :指定投放在北京地區(qū)(省份id :11)且在電視劇分類(分類id d)下的廣
生口 o比如,某次廣告請求,對應的參數值分別為
權利要求
1.一種廣告投放方法,其特征在于,該方法包括 從廣告數據庫服務器中獲取廣告數據,將獲取的廣告數據緩存在后臺管理服務器中;前端廣告投放服務器從后臺管理服務器的緩存中讀取廣告數據并在本地緩存; 所述后臺服務器和前端投放服務器以投放條件樹的樹形數據結構來緩存所述廣告數據,投放條件樹的每一級對應一級廣告投放條件的優(yōu)先級,每個分支對應一種投放條件,最底層葉子節(jié)點為符合上層節(jié)點所指示投放條件的廣告素材標識的集合; 當前端投放服務器接收到廣告請求后,根據廣告請求參數在所述投放條件樹中匹配滿足投放條件的廣告,并返回廣告代碼給請求方。
2.根據權利要求I所述的方法,其特征在于,所述匹配滿足投放條件的廣告,并返回廣告代碼給請求方的方法具體為 依據廣告請求攜帶的參數確定各個優(yōu)先級對應的投放條件; 以深度遍歷算法在所述投放條件樹中匹配所確定的各個優(yōu)先級對應的投放條件,在遇到葉子節(jié)點時,從葉子節(jié)點所包含的廣告素材標識的集合中獲取符合投放條件的廣告素材標識; 根據所獲取的廣告素材標識獲取具體的廣告素材詳細參數,將廣告素材詳細參數與廣告請求中的相關參數一起組織成廣告代碼,將廣告代碼返回給請求方。
3.根據權利要求2所述的方法,其特征在于,所述后臺服務器構造投放條件樹的方法具體為 使用哈希圖HashMap來構造所述投放條件樹中除葉子節(jié)點之外的每一級節(jié)點,通過HashMap鍵值對中的key來反映不同的投放條件,通過HashMap鍵值對中的value來鏈接下一級HashMap,每一級HashMap對應一級廣告投放條件優(yōu)先級; 最后一級HashMap鍵值對中的value以列表數據類型裝載符合相同投放條件的所有廣告素材標識。
4.根據權利要求I所述的方法,其特征在于, 所述廣告數據庫服務器使用分布式網絡緩存工具將獲取的廣告數據緩存在后臺管理服務器中; 所述前端廣告投放服務器使用分布式網絡緩存工具從后臺管理服務器的緩存中讀取廣告數據并在本地緩存。
5.根據權利要求I所述的方法,其特征在于, 在前端投放服務器CastServer集群和用戶終端之間掛接負載均衡服務器HaproxyServer,所述HaproxyServer用于依據負載均衡策略向CastServer集群中的不同CastServer分發(fā)廣告請求。
6.一種廣告投放系統(tǒng),其特征在于,所述系統(tǒng)包括 廣告數據庫服務器,用于存儲與廣告投放相關的廣告數據; 后臺服務器,用于從廣告數據庫服務器中獲取廣告數據,將獲取的廣告數據緩存在本地緩存中; 前端投放服務器,用于從后臺管理服務器的緩存中讀取緩存的廣告數據并在本地緩存中進行緩存;接收廣告請求,根據廣告請求參數在本地緩存的廣告數據中匹配滿足投放條件的廣告,并返回廣告代碼給請求方;所述后臺服務器和前端投放服務器以投放條件樹的樹形數據結構來緩存所述廣告數據,投放條件樹的每一級對應一級廣告投放條件的優(yōu)先級,每個分支對應一種投放條件,最底層葉子節(jié)點為符合上層節(jié)點所指示投放條件的廣告素材標識的集合;所述前端投放服務器基于所述投放條件樹進行廣告匹配。
7.根據權利要求6所述的系統(tǒng),其特征在于,所述前端投放服務器包括 緩存模塊,用于從后臺管理服務器的緩存中讀取緩存的廣告數據并在本地緩存中進行緩存; 匹配模塊,用于依據廣告請求攜帶的參數確定各個優(yōu)先級對應的投放條件,以深度遍歷算法在所述投放條件樹中匹配所確定的各個優(yōu)先級對應的投放條件,在遇到葉子節(jié)點時,從葉子節(jié)點所包含的廣告素材標識的集合中獲取符合投放條件的廣告素材標識; 反饋模塊,用于根據所獲取的廣告素材標識獲取具體的廣告素材詳細參數,將廣告素材詳細參數與廣告請求中的相關參數一起組織成廣告代碼,將廣告代碼返回給請求方。
8.根據權利要求7所述的系統(tǒng),其特征在于, 所述投放條件樹中使用哈希圖HashMap來構造除葉子節(jié)點之外的每一級節(jié)點,通過HashMap的鍵值對中的key來反映不同的投放條件,通過HashMap鍵值對中的value來鏈接下一級HashMap,每一級HashMap對應一級廣告投放條件優(yōu)先級;最后一級HashMap鍵值對中的value以列表數據類型裝載符合相同投放條件的所有廣告素材標識。
9.根據權利要求6所述的系統(tǒng),其特征在于, 所述廣告數據庫服務器使用分布式網絡緩存工具將獲取的廣告數據緩存在后臺管理服務器中; 所述前端廣告投放服務器使用分布式網絡緩存工具從后臺管理服務器的緩存中讀取廣告數據并在本地緩存。
10.根據權利要求6所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括 負載均衡服務器HaproxyServer,位于在前端投放服務器CastServer集群和用戶終端之間,用于依據負載均衡策略向CastServer集群中的不同CastServer分發(fā)廣告請求。
全文摘要
本發(fā)明公開了一種廣告投放方法及系統(tǒng),用于改進現有廣告系統(tǒng)結構,提高廣告投放效率,減小用戶等待時間。本發(fā)明采用后臺管理服務器MServer和前端投放服務器CastServer集群兩級廣告數據緩存結構,提高了廣告數據處理效率;廣告數據緩存采用樹形數據結構來反映不同的投放條件及投放條件的優(yōu)先級,前端投放服務器定時刷新本地緩存的廣告數據,基于廣告投放條件樹查找滿足投放條件的廣告,廣告投放條件樹的匹配時間復雜度相當于線性時間復雜度,相比傳統(tǒng)的廣告匹配方法大大提高了匹配效率,減少服務器的運算量。
文檔編號G06Q30/02GK102779308SQ20121000633
公開日2012年11月14日 申請日期2012年1月9日 優(yōu)先權日2012年1月9日
發(fā)明者盧述奇, 姚鍵, 尹玉宗, 張云鋒, 張緩迅, 潘柏宇 申請人:合一網絡技術(北京)有限公司