CN102779308B - 一种广告投放方法及系统 - Google Patents

一种广告投放方法及系统 Download PDF

Info

Publication number
CN102779308B
CN102779308B CN201210006336.XA CN201210006336A CN102779308B CN 102779308 B CN102779308 B CN 102779308B CN 201210006336 A CN201210006336 A CN 201210006336A CN 102779308 B CN102779308 B CN 102779308B
Authority
CN
China
Prior art keywords
advertisement
server
fixed condition
data
hashmap
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201210006336.XA
Other languages
English (en)
Other versions
CN102779308A (zh
Inventor
张云锋
尹玉宗
张缓迅
姚键
潘柏宇
卢述奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba China Co Ltd
Original Assignee
1Verge Internet Technology Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 1Verge Internet Technology Beijing Co Ltd filed Critical 1Verge Internet Technology Beijing Co Ltd
Priority to CN201210006336.XA priority Critical patent/CN102779308B/zh
Publication of CN102779308A publication Critical patent/CN102779308A/zh
Application granted granted Critical
Publication of CN102779308B publication Critical patent/CN102779308B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种广告投放方法及系统,用于改进现有广告系统结构,提高广告投放效率,减小用户等待时间。本发明采用后台管理服务器MServer和前端投放服务器CastServer集群两级广告数据缓存结构,提高了广告数据处理效率;广告数据缓存采用树形数据结构来反映不同的投放条件及投放条件的优先级,前端投放服务器定时刷新本地缓存的广告数据,基于广告投放条件树查找满足投放条件的广告,广告投放条件树的匹配时间复杂度相当于线性时间复杂度,相比传统的广告匹配方法大大提高了匹配效率,减少服务器的运算量。

Description

一种广告投放方法及系统
技术领域
本发明涉及互联网技术领域,尤其涉及一种互联网广告投放方法及系统。
背景技术
大型互联网的广告投放面临着如下几个主要问题:一是广告并发请求量大,往往平均每秒钟都要对数万甚至十万次广告请求作出响应。二是广告的定投方式(即指定广告在某种条件下投放)繁多,常见的定向投放方式有:视频组定投(指定的广告只能投到某一组指定的视频中)、人群定投(指定的广告只能投到某一类人群中)、地区定投、关键字定投,还可以进行多定投方式组合投放,如地区+视频组定投、地区+分类+关键字定投等;另外,以客户对投放次数的限制来看,还有N+投放(即限制每个用户在指定的时间段内能观看的广告次数)方式和普通的非N+投放方式。此外,还可能需要根据客户的重要性将客户划分为若干个等级,高等级客户的广告应该保证优先于低等级客户的广告投放。
常见的广告系统,其投放定向条件往往比较简单,如仅仅按关键字或网页分类(频道)等很少的几个定向条件来进行投放,只需要设计若干个简单的哈希表、列表或数组等数据结构来缓存广告数据,便能够满足广告投放的要求;然而当广告定向投放的条件非常多、广告之间又有各种投放优先级的要求时,如果仍然使用简单的数据结构来缓存数据,往往会在广告匹配的时候作过多的冗余查找,浪费服务器资源,广告投放效率将会受到极大的影响,此外,如果广告投放系统的系统结构设计不合理,广告投放效率会随着广告数据量的增大而成倍降低,广告的响应时间也会不断地增大,从而导致用户等待时间过长,影响用户感受。
发明内容
有鉴于此,本发明的主要目的在于提供一种广告数据的缓存方法及系统,用于改进现有广告系统结构,提高广告投放效率,减小用户等待时间。
为达到上述目的,本发明的技术方案是这样实现的:
一种广告投放方法,其特征在于,该方法包括:
从广告数据库服务器中获取广告数据,将获取的广告数据缓存在后台管理服务器中;前端广告投放服务器从后台管理服务器的缓存中读取广告数据并在本地缓存;
所述后台服务器和前端投放服务器以投放条件树的树形数据结构来缓存所述广告数据,投放条件树的每一级对应一级广告投放条件的优先级,每个分支对应一种投放条件,最底层叶子节点为符合上层节点所指示投放条件的广告素材标识的集合;
当前端投放服务器接收到广告请求后,根据广告请求参数在所述投放条件树中匹配满足投放条件的广告,并返回广告代码给请求方。
进一步地,所述匹配满足投放条件的广告,并返回广告代码给请求方的方法具体为:
依据广告请求携带的参数确定各个优先级对应的投放条件;
以深度遍历算法在所述投放条件树中匹配所确定的各个优先级对应的投放条件,在遇到叶子节点时,从叶子节点所包含的广告素材标识的集合中获取符合投放条件的广告素材标识;
根据所获取的广告素材标识获取具体的广告素材详细参数,将广告素材详细参数与广告请求中的相关参数一起组织成广告代码,将广告代码返回给请求方。
进一步地,所述后台服务器构造投放条件树的方法具体为:
使用哈希图HashMap来构造所述投放条件树中除叶子节点之外的每一级节点,通过HashMap键值对中的key来反映不同的投放条件,通过HashMap 键值对中的value来链接下一级HashMap,每一级HashMap对应一级广告投放条件优先级;
最后一级HashMap键值对中的value以列表数据类型装载符合相同投放条件的所有广告素材标识。
本发明还提供一种广告投放系统,所述系统包括:
广告数据库服务器,用于存储与广告投放相关的广告数据;
后台服务器,用于从广告数据库服务器中获取广告数据,将获取的广告数据缓存在本地缓存中;
前端投放服务器,用于从后台管理服务器的缓存中读取缓存的广告数据并在本地缓存中进行缓存;接收广告请求,根据广告请求参数在本地缓存的广告数据中匹配满足投放条件的广告,并返回广告代码给请求方;
所述后台服务器和前端投放服务器以投放条件树的树形数据结构来缓存所述广告数据,投放条件树的每一级对应一级广告投放条件的优先级,每个分支对应一种投放条件,最底层叶子节点为符合上层节点所指示投放条件的广告素材标识的集合;所述前端投放服务器基于所述投放条件树进行广告匹配。
进一步地,所述前端投放服务器包括:
缓存模块,用于从后台管理服务器的缓存中读取缓存的广告数据并在本地缓存中进行缓存;
匹配模块,用于依据广告请求携带的参数确定各个优先级对应的投放条件,以深度遍历算法在所述投放条件树中匹配所确定的各个优先级对应的投放条件,在遇到叶子节点时,从叶子节点所包含的广告素材标识的集合中获取符合投放条件的广告素材标识;
反馈模块,用于根据所获取的广告素材标识获取具体的广告素材详细参数,将广告素材详细参数与广告请求中的相关参数一起组织成广告代码,将广告代码返回给请求方。
进一步地,所述广告数据库服务器使用分布式网络缓存工具将获取的广告 数据缓存在后台管理服务器中;所述前端广告投放服务器使用分布式网络缓存工具从后台管理服务器的缓存中读取广告数据并在本地缓存。
进一步地,所述系统还包括:
负载均衡服务器HaproxyServer,位于在前端投放服务器CastServer集群和用户终端之间,用于依据负载均衡策略向CastServer集群中的不同CastServer分发广告请求。
本发明采用后台管理服务器MServer和前端投放服务器CastServer集群两级广告数据缓存结构,提高了广告数据处理效率;广告数据缓存采用树形数据结构来反映不同的投放条件及投放条件的优先级,前端投放服务器定时刷新本地缓存的广告数据,基于广告投放条件树查找满足投放条件的广告,广告投放条件树的匹配时间复杂度相当于线性时间复杂度,相比传统的广告匹配方法大大提高了匹配效率,减少服务器的运算量。
附图说明
图1为本发明实施例提供的广告投放系统功能模块示意图;
图2为本发明实施例提供的投放条件树结构示意图;
图3为本发明实施例提供的投放条件树的装载过程流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下举实施例并参照附图,对本发明进一步详细说明。
图1为本发明实施例提供的一种广告投放系统的结构图,该系统包括:
广告数据库服务器AdDBServer,用于存储与广告投放相关的广告数据,包含:客户数据、合同数据、投放条件、广告素材等。
后台管理服务器MServer,用于定时从广告数据库服务器中提取广告数据,生成投放条件树数据对象,并在本地缓存所生成的投放条件树数据对象;MServer还可用于广告预定、排期、素材设置等一系列管理功能。
前端广告投放服务器CastServer,用于定时从后台管理服务器提取缓存的广告投放条件树数据对象并在本地进行缓存,在接收到用户终端发送的广告请求时,基于所述广告投放条件树查找满足投放条件的广告,并返回广告代码给请求方。
广告素材服务器IdeaServer,用于存放实际要播放的广告素材,以及在接收到用户终端发起的获取实际播放的广告素材的请求时,向用户终端返回实际播放的广告素材。
用户终端接收到前端广告投放服务器返回的广告代码后,通过解析代码获得实际需要的广告素材标识,然后向广告素材服务器发起获取实际播放的广告素材的请求,广告素材服务器依据请求返回相应的广告素材。所述广告素材可以为视频、flash、图片等。
为了应对大规模的并发的广告请求,减轻数据库服务器的负载,本发明采用两级数据缓存机制,并且在后台管理服务器MServer和前端投放服务器CastServer上使用分布式网络缓存工具(如Memcache、redis等)来进行数据的缓存。Mserver定时从广告数据库服务器AdDBServer中取得待投放的广告数据,生成投放条件树数据对象,然后通过分布式网络缓存工具提供的写入set操作功能将所生成的投放条件树数据对象写入本机的缓存中;CastServer会定时通过分布式网络缓存工具提供的获取get操作从MServer的缓存中读取缓存数据,装载到本机缓存中。
所述后台服务器和前端投放服务器对所述广告数据进行缓存时采用树形数据结构即投放条件树,来反映不同的投放条件及投放条件的优先级,投放条件树的每一层对应一级广告投放优先级,每个分支对应不同的投放条件,具体的,本发明使用哈希图HashMap来构造所述投放条件树中除叶子节点之外的每一级节点,通过HashMap键值对中的key来反映投放条件,通过HashMap键值对中的value来链接下一级HashMap,每一级HashMap对应一级广告投放优先级;
所述投放条件树的最底层叶子节点为符合上层节点所指示投放条件的广告 素材标识的集合,用于存放投放条件相同的广告素材标识,所述集合可通过列表List、数组、链表等数据类型来表达。
优选地,为了保证高效投放,前端投放服务器CastServer和用户终端之间挂接了负载均衡服务器HaproxyServer,当用户在网站上的某个行为(如打开一个视频播放页)触发了一次广告请求时,该请求会首先被HaproxyServer得到,然后HaproxyServer会通过一定的策略将该请求转发给多个CastServer中的一台,这台CastServer再到其本机的缓存中进行广告匹配,若找到合适的广告,则向请求方返回要投放的广告代码。
本发明优选实施例中,通过多级的哈希图HashMap和列表List来构造投放条件树数据对象,广告投放系统中待投放的广告数据就是以这种结构存放在缓存中,其结构以java风格可描述如下:
HashMap<String,HashMap<String,...,HashMap<String,List<String>>...>>
根据上面的描述可以看出,该数据结构并非完全固定不变的,会因广告投放系统所要求支持的投放功能而有所不同。其中省略号内表示内部有若干个嵌套的HashMap结构。HashMap是以键值对(key-value)方式来存储数据的,它以put(key,value)方法存入键值对,以get(key)方法取得value,其优点是可以在线性时间复杂度内完成数据查找,而不必在每次查找时都遍历整个集合。最内层是List对象,它则不仅提供了随机访问列表中指定位置的元素,还可以add(value)添加元素,以remove(index)方法删除指定位置的元素。
所述投放条件树的构造方法如下:
步骤1、确定广告有哪些具体的投放要求;
例如视频广告投放优先级别的要求为:
A、广告定投方式为最优先考虑:视频组定投广告优先级最高、人群定投广告次之、其它定投方式再次之,其它广告须满足长广告(目前大于7秒的广告被视为长广告,否则为短广告)只投在长视频中、短广告只投在短视频中;
B、是否N+广告为次优先考虑:N+广告优先于非N+广告进行投放;
C、客户级别为再次优先考虑:客户级别有V(VIP客户)、A、B、C、D、 E等,级别越高,投放顺序越靠前;
D、定投方式和是否N+限制、客户级别等都相同的情况下,所做具体投放限制条件越严苛,越优先投放,如:定投北京地区的电视剧的广告,要优先于仅仅定投电视剧的广告;
E、相同的投放条件下:按千人成本(Cost Per Mille,CPM)投放的广告,优先于按全流量投放的广告。
步骤2、根据广告投放系统具体的功能需求来确定投放条件树的具体结构,基本原则是:每一种广告投放条件优先级别要求占用一级HashMap,每一级的HashMap中由键值对(即key-value对)构成,通过HashMap的键值对中的key来反映不同的投放条件,通过HashMap键值对中的value来链接下一级HashMap,直到所有优先级别的HashMap创建完毕,最后一级HashMap键值对中的value则存放一个列表List数据对象,List中存放的是投放条件相同的广告素材ID的集合,广告素材ID是一个广告素材的唯一标识。
例如,基于步骤1中所给的视频广告投放优先级别的要求,应该使用“5层HashMap+1层List”来构造所述投放条件树,以java语言风格描述为:
HashMap<String,HashMap<String,HashMap<String,HashMap<String,HashMap<String,List>>>>>CondTree;
所构造的投放条件树的具体结构可参见附图2的示例。
步骤3、上述数据结构中最内层的List中存放的仅仅是广告素材的ID,实际进行广告投放的时候需要根据广告素材的ID取得具体要投放的广告的具体相关参数,如:广告素材url、曝光监测url、点击监测url等相关内容。上述具体相关参数可以被组织为一个对象,然后以HashMap方式缓存起来,其结构以java风格定义为:
HashMap<Interger,AdEntity>adEntityMap;
其中的key是广告素材ID,value是一个AdEntity对象,对象中存放广告素材url、曝光监测url、点击监测url等相关内容。实际投放时,会先在步骤2中所构造的投放条件树CondTree对象中进行广告匹配,取得一个合适的广告素 材ID,然后再根据这个ID到adEntityMap中取得具体的广告素材详细参数,这些参数与用户请求的url中的相关参数一起被组织成广告代码,然后返回给播放器,播放器负责处理后续的广告展现。
当从广告数据库中取得一个当前处于投放期的广告后,需要将该广告装载到上述投放条件树中。以下基于上述投放条件树的构造方法,举实例描述广告投放系统的投放条件树的装载过程,如图3所示:
步骤101、从广告数据库中取得一个当前在投的广告素材(idea)列表ideaList;
步骤102、判断ideaList中是否还有需要处理的广告素材,若有则从ideaList列表中取出一个广告素材,然后执行步骤103;否则结束流程;
步骤103、根据当前的广告素材的相关属性来确定所取出的广告素材的第一级关键字key1;
key1的值由idea的相关属性来确定,例如:若该广告为视频组或人群定投,则为v;否则,如果为长广告,则为l;如果为短广告,则为s;
步骤104、在投放条件树的根节点即第一级HashMap(以下简称map1)中匹配是否存在以key1为关键字的下一级HashMap(以下简称map2),若不存在则执行步骤105;否则执行步骤106;
步骤105、以key1关键字构造map2,并将键值对(key1,map2)存入map1;
执行语句形如: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),若不存在则执行步骤108;否则执行步骤109;
步骤108、以key2关键字构造map3,并将键值对(key2,map3)存入map2;
执行语句形如: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),若不存在则执行步骤111;否则执行步骤112;
步骤111、以key3关键字构造map4,并将键值对(key3,map4)存入map3;
执行语句形如:map4=new HashMap<String,HashMap<String,List<String>>>();
步骤112、根据当前的广告素材的相关属性来确定该广告素材的第四级关键字key4;
key4同样由广告素材的相关属性来确定,其值依赖于idea的具体定投方式,例如:av(表示地区+视频组定投)、ac(地区+人群定投)、p(分类定投)等;
步骤113、在map4中判断是否存在以key4为关键字的下一级HashMap(以下简称map5),若不存在则执行步骤114;否则执行步骤115;
步骤114、以key4关键字构造map5,并将键值对(key4,map5)存入map4;
执行语句形如:map5=new HashMap<String,List<String>>();
步骤115、根据当前的广告素材的相关属性来确定该广告素材的第五级关键字key5;
步骤116、在map5中判断是否存在以key5为关键字的下一级List对象,若不存在则执行步骤117;否则执行步骤118;
步骤117、新建List对象,并将键值对key5-List添加到map5中;
步骤118、将当前广告素材id添加到map5中key5对应的List所指向的广 告素材列表中,若所对应的广告素材列表不存在,则新建后再存入。然后再次执行步骤102。
当前端投放服务器接收到广告请求后,依据广告请求中的参数,基于投放条件树查找满足投放条件的广告,并返回广告代码给请求方。与上述广告装载步骤流程相对应的广告匹配流程的具体步骤如下:
步骤201、从所接收到的广告请求中获取请求参数;
广告请求中的一系列参数可采用下述ReqParam对象的形式进行组织:
public class ReqParam{
private String vid;//视频id
private String s;//视频所对应的节目id
private String ct;//视频所属的一级分类,如:电视剧、电影、综艺、娱乐等
private String cs;//视频所属的二级分类,它有一个唯一对应的一级分类,如:大陆剧、港台剧、韩剧,等都是一级分类电视剧下的二级分类
private String provinceId;//当前用户所在的省,可通过用户请求中的ip信息获取
private String cityId;//当前用户所在的城市,可通过用户请求中的ip信息获取
private String uid;//上传当前视频的用户的账号(用户id)
private String t;//视频的播放时长
private String keyword;//视频请求所带的关键字
private String partnerid;//合作方id
}
步骤202、从广告请求的参数中获取第一级关键字列表;
根据广告请求参数reqParam,获取已排好序的当前级别map对应的key1列表;
步骤203、从第一级关键字列表取出一个未处理的第一级关键字key1,执 行步骤204;若第一级关键字列表为空或所有的关键字都处理完毕仍未找到可投放的广告,则转到步骤218;
步骤204、在第一级HashMap中(以下简称map1)匹配key1,获得key1对应的下一级HashMap(以下简称map2);
步骤205;从广告请求参数中获取以key1为上级关键字的第二级关键字列表;
步骤206、从第二级关键字列表取出一个未处理的第二级关键字key2,执行步骤207;若第二级关键字列表为空或所有的关键字都处理完毕仍未找到可投放的广告,则返回执行步骤203;
步骤207、在map2中匹配key2,获得key2对应的下一级HashMap(以下简称map3);
步骤208;从广告请求参数中获取以key2为上级关键字的第三级关键字列表;
步骤209、从第三级关键字列表取出一个未处理的第三级关键字key3,执行步骤210;若第三级关键字列表为空或所有的关键字都处理完毕仍未找到可投放的广告,则返回执行步骤206;
步骤210、在map3中匹配key3,获得key3对应的下一级HashMap(以下简称map4);
步骤211;从广告请求参数中获取以key3为上级关键字的第四级关键字列表;
步骤212、从第四级关键字列表取出一个未处理的第四级关键字key4,执行步骤213;若第四级关键字列表为空或所有的关键字都处理完毕仍未找到可投放的广告,则返回执行步骤209;
步骤213、在map4中匹配key4,获得key4对应的下一级HashMap(以下简称map5);
步骤214;从广告请求参数中获取以key4为上级关键字的第五级关键字列表;
步骤215、从第五级关键字列表取出一个未处理的第五级关键字key5,执行步骤216;若第五级关键字列表为空或所有的关键字都处理完毕仍未找到可投放的广告,则返回执行步骤212;
步骤216、在map5中匹配关键字key5,获得key5对应的广告素材列表adList;
步骤217、从adList的尾部依次向前查找可投放的广告,若查到可投放的广告,则返回对应的广告素材标识;若adList中的某个广告已投放完毕,则从adList中删除该广告的广告素材标识;若在adList中没有找到可投放的广告,则执行步骤215(即退回到上一级map)。
步骤218、返回空字符串,结束流程。
以附图2所示的投放条件树为例,按照上述规则进行遍历,其过程为:
(1)先从根节点向下查找,顺序依次为:k1v、k2n、k3o、k4s、k5s1;
(2)到达第五层后,取得第一个列表,然后从列表末尾开始向前访问,依次为:idm、id(m-1)、...、id1;
(3)到达第一个列表的最前端后,如果仍然未找到可投放的广告,则退回到上一层的k5s2;
(4)然后从k5s2再找到第二个列表,然后再从列表末尾开始向前访问,依次为:idn、id(n-1)、...、id(m+1)。
按上述规则,最终可完成对整个投放条件树的遍历。
实施实例一:
比如某视频网站,对其前贴广告(即视频播放之前播放的视频广告)投放的要求如下:
(1)要求能够提供视频组定投、人群定投、用户定投、关键字定投、地区定投+分类(频道)定投、分类定投等定投方式;
(2)要求能够提供对广告的N+限制功能;
(3)能够根据客户的重要性将客户划分为若干个等级,高等级客户的广告应该保证优先于低等级客户的广告投放,但是视频组定投和人群定投类的广告则不必根据客户等级来决定投放顺序;
(4)为提高用户体验,短视频(5分钟以内的视频)中,只能投放短前贴(时长不超过7秒钟),长视频(5分钟以上的视频)中,只能投放长前贴(时长大于7秒钟),但是视频组定投和人群定投类的广告则不受此限制;
根据上述要求,可以采用“5级HashMap+1级List”的组合数据结构来完成广告数据的缓存。下面对每一级的key的组成进行说明。
其中第一级的key作如下设置:
v:用于视频组(videogroup)定投、人群定投类广告,由于这类定投方式没有长广告只投长视频、短广告只投在短视频,以及没有根据客户级别决定投放顺序的,所以它们归为一类。
l:用于只投在长视频中的长广告。
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)人群中的广告。
a11pd:指定投放在北京地区(省份id:11)且在电视剧分类(分类id:d)下的广告。
比如,某次广告请求,对应的参数值分别为:
遍历过程如下:
(1)先对五层的Map进行深度优先查找:key1=v->key2=n->key3=a->key4=s->key5=s13339;
(2)根据key5对应的value得到List,然后对List从列表尾部开始向前查找,如果找到一个满足投放条件(投放量未耗尽、且满足广告投放频次N+限制)的广告,就投放;否则退回到上一层的map中,再继续深度优先向下查找。
实施实例二:
如某网站对页面广告(即网页上除视频播放器内的视频广告之外的广告)的投放需求有:
(1)要求能够提供地区定投、用户定投、广告位(即网页上的某个指定位置)定投、关键字定投等四种定投方式,以及四种定投方式中的多个互相组合投放的方式;
(2)广告必须投放在网页上的某个广告位上,所以广告位是组合中的必选项。
根据上述要求,可以采用“2级HashMap+1级List”的组合数据结构来完 成广告数据的缓存。下面对每一级的key的组成进行说明:
其中第一级的key作如下设置:
aupk:地区+用户+分类+关键字定投广告
upk:用户+分类+关键字定投广告
apk:地区+分类+关键字定投广告
aup:地区+用户+分类定投广告
pk:分类+关键字定投广告
up:用户+分类定投广告
ap:地区+分类定投广告
p:分类定投广告
第二级key由第一级key名称+key值组成,如:
a11p47k新水浒:表示在apk(地区+广告位+关键字)定投方式中,指定投放在北京(省份ID为11)、投放位置为“首屏-顶部通栏”(广告位为:47),网页关键字含有:新水浒的页面的广告。
第三级的List中存放的内容仍然是广告素材ID,与实例一相同。
基于本发明实施例可知,本发明采用了树型数据结构来存储广告数据,相比于其它存储方式,大大节约了存储空间。常见的广告系统在进行广告投放时,往往是分别以不同的定向条件依次到广告队列中进行广告匹配,每次匹配都相当于对广告列表作了一次遍历,而本发明中,由于将所有待投放的广告根据优先级和投放条件分层组织起来形成一个树型的结构,匹配的过程即为对树的深度遍历的过程,其时间复杂度为线性时间复杂度,最多只需进行一次完整的对树的深度遍历即可完成全部广告匹配工作,因此,广告的匹配效率和投放效率更高,节省了大量服务器运算量。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (6)

1.一种广告投放方法,其特征在于,该方法包括:
从广告数据库服务器中获取广告数据,将获取的广告数据缓存在后台管理服务器中;前端投放服务器从后台管理服务器的缓存中读取广告数据并在本地缓存;
所述后台管理服务器和前端投放服务器以投放条件树的树形数据结构来缓存所述广告数据,投放条件树的每一级对应一级广告投放条件的优先级,每个分支对应一种投放条件,最底层叶子节点为符合上层节点所指示投放条件的广告素材标识的集合;
当前端投放服务器接收到广告请求后,根据广告请求参数在所述投放条件树中匹配满足投放条件的广告,并返回广告代码给请求方;
所述匹配满足投放条件的广告,并返回广告代码给请求方的方法具体为:
依据广告请求携带的参数确定各个优先级对应的投放条件;
以深度遍历算法在所述投放条件树中匹配所确定的各个优先级对应的投放条件,在遇到叶子节点时,从叶子节点所包含的广告素材标识的集合中获取符合投放条件的广告素材标识;
根据所获取的广告素材标识获取具体的广告素材详细参数,将广告素材详细参数与广告请求中的相关参数一起组织成广告代码,将广告代码返回给请求方;
所述后台管理服务器构造投放条件树的方法具体为:
使用哈希图HashMap来构造所述投放条件树中除叶子节点之外的每一级节点,通过HashMap键值对中的key来反映不同的投放条件,通过HashMap键值对中的value来链接下一级HashMap,每一级HashMap对应一级广告投放条件优先级;
最后一级HashMap键值对中的value以列表数据类型装载符合相同投放条件的所有广告素材标识。
2.根据权利要求1所述的方法,其特征在于,
所述广告数据库服务器使用分布式网络缓存工具将获取的广告数据缓存在后台管理服务器中;
所述前端投放服务器使用分布式网络缓存工具从后台管理服务器的缓存中读取广告数据并在本地缓存。
3.根据权利要求1所述的方法,其特征在于,
在前端投放服务器CastServer集群和用户终端之间挂接负载均衡服务器HaproxyServer,所述HaproxyServer用于依据负载均衡策略向CastServer集群中的不同CastServer分发广告请求。
4.一种广告投放系统,其特征在于,所述系统包括:
广告数据库服务器,用于存储与广告投放相关的广告数据;
后台管理服务器,用于从广告数据库服务器中获取广告数据,将获取的广告数据缓存在所述后台管理服务器的缓存中;
前端投放服务器,用于从后台管理服务器的缓存中读取缓存的广告数据并在本地缓存中进行缓存;接收广告请求,根据广告请求参数在本地缓存的广告数据中匹配满足投放条件的广告,并返回广告代码给请求方;
所述后台管理服务器和前端投放服务器以投放条件树的树形数据结构来缓存所述广告数据,投放条件树的每一级对应一级广告投放条件的优先级,每个分支对应一种投放条件,最底层叶子节点为符合上层节点所指示投放条件的广告素材标识的集合;所述前端投放服务器基于所述投放条件树进行广告匹配;所述前端投放服务器包括:
缓存模块,用于从后台管理服务器的缓存中读取缓存的广告数据并在本地缓存中进行缓存;
匹配模块,用于依据广告请求携带的参数确定各个优先级对应的投放条件,以深度遍历算法在所述投放条件树中匹配所确定的各个优先级对应的投放条件,在遇到叶子节点时,从叶子节点所包含的广告素材标识的集合中获取符合投放条件的广告素材标识;
反馈模块,用于根据所获取的广告素材标识获取具体的广告素材详细参数,将广告素材详细参数与广告请求中的相关参数一起组织成广告代码,将广告代码返回给请求方;
所述投放条件树中使用哈希图HashMap来构造除叶子节点之外的每一级节点,通过HashMap的键值对中的key来反映不同的投放条件,通过HashMap键值对中的value来链接下一级HashMap,每一级HashMap对应一级广告投放条件优先级;最后一级HashMap键值对中的value以列表数据类型装载符合相同投放条件的所有广告素材标识。
5.根据权利要求4所述的系统,其特征在于,
所述广告数据库服务器使用分布式网络缓存工具将获取的广告数据缓存在后台管理服务器中;
所述前端投放服务器使用分布式网络缓存工具从后台管理服务器的缓存中读取广告数据并在本地缓存。
6.根据权利要求4所述的系统,其特征在于,所述系统还包括:
负载均衡服务器HaproxyServer,位于在前端投放服务器CastServer集群和用户终端之间,用于依据负载均衡策略向CastServer集群中的不同CastServer分发广告请求。
CN201210006336.XA 2012-01-09 2012-01-09 一种广告投放方法及系统 Expired - Fee Related CN102779308B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210006336.XA CN102779308B (zh) 2012-01-09 2012-01-09 一种广告投放方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210006336.XA CN102779308B (zh) 2012-01-09 2012-01-09 一种广告投放方法及系统

Publications (2)

Publication Number Publication Date
CN102779308A CN102779308A (zh) 2012-11-14
CN102779308B true CN102779308B (zh) 2017-04-26

Family

ID=47124218

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210006336.XA Expired - Fee Related CN102779308B (zh) 2012-01-09 2012-01-09 一种广告投放方法及系统

Country Status (1)

Country Link
CN (1) CN102779308B (zh)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103327379B (zh) * 2013-06-06 2016-08-10 合一信息技术(北京)有限公司 一种根据网络视频时长进行广告匹配投放的方法及装置
CN103365662B (zh) * 2013-07-11 2016-08-03 合一信息技术(北京)有限公司 一种基于流媒体广告模板进行广告投放的方法及装置
CN103617199B (zh) * 2013-11-13 2016-08-17 北京京东尚科信息技术有限公司 一种操作数据的方法和系统
CN103679510A (zh) * 2013-12-17 2014-03-26 深圳市东信时代信息技术有限公司 移动互联网广告的监测方法及系统
CN104978371A (zh) * 2014-04-14 2015-10-14 阿里巴巴集团控股有限公司 用于集群系统的数据加载方法、装置和集群系统
CN104021176B (zh) * 2014-06-03 2016-08-17 合一信息技术(北京)有限公司 具有高度可扩展性的广告匹配方法和系统
CN104519408A (zh) * 2014-11-25 2015-04-15 四川长虹电器股份有限公司 一种基于智能电视的广告数据监测系统和方法
TWI568251B (zh) * 2015-03-24 2017-01-21 Incentive Message Delivery Method and System
CN108352025B (zh) * 2015-07-24 2022-10-11 安普视频有限公司 基于消费者在线行为的电视广告时段定位
CN105611342B (zh) * 2015-11-04 2019-01-29 合一网络技术(北京)有限公司 一种广告投放的方法及系统
CN105376611A (zh) * 2015-12-11 2016-03-02 深圳市九洲电器有限公司 广告选择方法及系统
CN105376592B (zh) * 2015-12-21 2019-02-12 优酷网络技术(北京)有限公司 一种基于频次控制的广告素材轮播方法
CN105678317B (zh) * 2015-12-30 2020-12-04 腾讯科技(深圳)有限公司 一种信息处理方法及服务器
CN105931088A (zh) * 2016-06-28 2016-09-07 北京金山安全软件有限公司 广告展示方法、装置以及终端
CN106649445B (zh) * 2016-09-19 2020-06-23 深圳市东信时代信息技术有限公司 基于Redis的广告数据存储及投放方法
CN107464133B (zh) * 2017-07-05 2021-02-23 微梦创科网络科技(中国)有限公司 一种投放广告的方法及装置
CN108416610B (zh) * 2018-01-19 2022-03-01 创新先进技术有限公司 用户历史反馈信息形成方法及广告投放频次控制方法
CN110659927A (zh) * 2018-06-29 2020-01-07 南京芝兰人工智能技术研究院有限公司 一种广告投放的方法和系统
CN109299972A (zh) * 2018-08-24 2019-02-01 努比亚技术有限公司 一种广告分配方法、服务器及计算机可读存储介质
CN111275473B (zh) * 2018-12-04 2023-12-15 北京达佳互联信息技术有限公司 内容项投放方法、装置、服务器及存储介质
CN109727061B (zh) * 2018-12-06 2021-03-30 华为终端有限公司 一种广告推送方法和数据管理平台
CN109871380B (zh) * 2019-01-14 2022-11-11 深圳市东信时代信息技术有限公司 一种基于Redis的人群包应用方法及系统
CN110298685A (zh) * 2019-05-22 2019-10-01 深圳壹账通智能科技有限公司 信息展示方法、装置、计算机设备及存储介质
CN110533457A (zh) * 2019-07-31 2019-12-03 威富通科技有限公司 一种广告推送系统、方法及服务器
CN110503464B (zh) * 2019-08-12 2024-01-26 上海漫酷网络技术有限公司 一种基于分布式数据库的广告投放频次控制方法
CN111160958B (zh) * 2019-12-20 2021-02-26 北京金堤科技有限公司 广告展示方法和系统、移动终端、后台服务器、介质、设备
CN112258208A (zh) * 2020-07-24 2021-01-22 北京沃东天骏信息技术有限公司 一种对象匹配方法、装置、设备及存储介质
CN111881402B (zh) * 2020-08-05 2024-06-14 卓米私人有限公司 一种配置数据投放方法、装置及电子设备
CN112184312A (zh) * 2020-09-28 2021-01-05 建信金融科技有限责任公司 一种触达频率控制方法、装置、设备及介质
CN112422995A (zh) * 2020-11-20 2021-02-26 广州欢网科技有限责任公司 降低流量成本的系统及工作方法
CN114638660B (zh) * 2022-05-19 2022-08-09 广东省广告集团股份有限公司 一种媒体广告投放方法
CN114816177A (zh) * 2022-05-19 2022-07-29 北京趣云万维信息技术有限公司 广告投放策略创建方法、装置、存储介质和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101295301A (zh) * 2007-04-25 2008-10-29 百度在线网络技术(北京)有限公司 广告投放方法及广告投放服务器
CN101860812A (zh) * 2009-04-08 2010-10-13 北京闻言科技有限公司 一种在手机客户端高效投放并显示广告条的方法
CN201910071U (zh) * 2010-12-13 2011-07-27 上海钢联电子商务股份有限公司 一种基于3g网络的电子商务系统
CN102306183A (zh) * 2011-08-30 2012-01-04 王洁 一种对事务数据流进行闭合加权频繁模式挖掘的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101295301A (zh) * 2007-04-25 2008-10-29 百度在线网络技术(北京)有限公司 广告投放方法及广告投放服务器
CN101860812A (zh) * 2009-04-08 2010-10-13 北京闻言科技有限公司 一种在手机客户端高效投放并显示广告条的方法
CN201910071U (zh) * 2010-12-13 2011-07-27 上海钢联电子商务股份有限公司 一种基于3g网络的电子商务系统
CN102306183A (zh) * 2011-08-30 2012-01-04 王洁 一种对事务数据流进行闭合加权频繁模式挖掘的方法

Also Published As

Publication number Publication date
CN102779308A (zh) 2012-11-14

Similar Documents

Publication Publication Date Title
CN102779308B (zh) 一种广告投放方法及系统
CN101604324B (zh) 一种基于元搜索的视频服务网站的搜索方法及系统
CN104243425B (zh) 一种在内容分发网络中进行内容管理的方法、装置及系统
Wang et al. Mashup-oriented API recommendation via random walk on knowledge graph
CN104412266A (zh) 用于具有动态排序的树结构的多维数据储存和文件系统的方法和装置
US20130024431A1 (en) Event database for event search and ticket retrieval
CN104618506A (zh) 一种众包的内容分发网络系统、方法与装置
CN104536959A (zh) 一种Hadoop存取海量小文件的优化方法
CN103348344A (zh) 图形数据的复合语句索引
US20100042615A1 (en) Systems and methods for aggregating content on a user-content driven website
CN106104510A (zh) 确定用户设备的活跃角色
CN106708858A (zh) 一种信息推荐方法及装置
CN100458784C (zh) 在数字图书馆中所采用的检索系统和检索方法
CN104516920B (zh) 数据查询方法和数据查询系统
CN107464133A (zh) 一种投放广告的方法及装置
CN103838831B (zh) 一种基于社区划分的在线社交网络海量数据存储方法
CN102163234A (zh) 一种基于纠错相关度对查询序列进行纠错的设备和方法
CN102722566A (zh) 社交网络中潜在好友查询方法
CN101667191B (zh) 基于p2p的信息共享方法
CN101059808A (zh) 一种基于质量和在线人数的p2p视频检索系统及方法
Cohen et al. A case for associative peer to peer overlays
CN102880728B (zh) 名人视频搜索结果个性化排序的方法
CN103823805B (zh) 基于社区的相关帖推荐系统及推荐方法
CN103365897A (zh) 一种支持Bigtable数据模型的片段缓存方法
CN106649462A (zh) 一种针对海量数据全文检索场景的实现方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200429

Address after: 310000 room 508, floor 5, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province

Patentee after: Alibaba (China) Co.,Ltd.

Address before: 100080 Beijing Haidian District city Haidian street A Sinosteel International Plaza No. 8 block 5 layer A, C

Patentee before: Youku Internet Technology (Beijing) Co.,Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170426

Termination date: 20210109