CN105184614A - 一种基于Storm平台的分布式数字标牌广告投放方法 - Google Patents

一种基于Storm平台的分布式数字标牌广告投放方法 Download PDF

Info

Publication number
CN105184614A
CN105184614A CN201510583827.4A CN201510583827A CN105184614A CN 105184614 A CN105184614 A CN 105184614A CN 201510583827 A CN201510583827 A CN 201510583827A CN 105184614 A CN105184614 A CN 105184614A
Authority
CN
China
Prior art keywords
order
time
waiting
orbiting
screen
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.)
Granted
Application number
CN201510583827.4A
Other languages
English (en)
Other versions
CN105184614B (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.)
GUANGZHOU WINALL ELECTRONIC TECHNOLOGY Co.,Ltd.
Original Assignee
Beijing Technology and Business University
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 Beijing Technology and Business University filed Critical Beijing Technology and Business University
Priority to CN201510583827.4A priority Critical patent/CN105184614B/zh
Publication of CN105184614A publication Critical patent/CN105184614A/zh
Application granted granted Critical
Publication of CN105184614B publication Critical patent/CN105184614B/zh
Active 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

本发明公开了一种基于Storm平台的分布式数字标牌广告投放方法,将广告投放过程分为:1)搭建基于Storm平台的处理框架,包含读订单,选屏,排期,更新订单状态;2)发射源接收订单消息并发给选屏处理单元;3)选屏处理单元根据订单地理约束条件等为每个订单选择屏位;4)排期处理单元根据订单中时间约束条件、屏位空闲时间段为该屏位生成排期列表;5)状态处理单元根据排期结果,更新订单状态。本发明能够高效地实现海量订单广告的即时精准投放,同时能够提高数字标牌的屏位利用率,减少时间碎片,具有很高的商业价值和应用推广价值。

Description

一种基于Storm平台的分布式数字标牌广告投放方法
技术领域
本发明涉及数字标牌广告投放,具体涉及一种基于Storm平台的分布式数字标牌广告投放方法,属于新媒体广告投放领域。
背景技术
随着互联网技术的快速发展和广告行业的数字化变革,数字标牌广告在政府机关、银行金融、商业连锁、机场车站、营业厅等行业和场所得到了广泛的应用。数字标牌广告与传统的电视广告、报纸广告相比,更具有灵活性,广告投放***可根据广告主设定的多样个性化的条件选择合适的数字标牌屏幕(下文简称广告屏),并且根据播放时间约束为每一块屏位(广告屏上的某一广告播放位)上的多个广告安排播放时间;同时,复杂多样的约束条件也增加了数字标牌广告位上排期的难度,造成时间碎片问题;基于互联网的广告投放***为大规模海量广告投放提供了可能性,同时即时精准投放的目标对计算资源和计算方法提出了更高的要求;高效稳定的广告投放方法成为深具价值的研究课题。如何高效地实现海量订单的广告选屏排期需求,同时提高数字标牌的屏位利用率,减少时间碎片成为数字标牌广告投放***设计者面临的主要挑战。
数字标牌广告投放包括选屏和排期两个阶段。选屏是广告投放***根据订单中的行政区域名称或编号、受众特征、经纬度范围等(地点约束条件),从广告屏数据库里选择合适的广告屏及屏位集合;排期是广告投放***根据广告主设定的广告时长、播放频次、上下刊日、播放的时间段、最小间隔时间等(时间约束条件),最终为广告安排在屏位上的播放时间。一个高效稳定的数字标牌广告排期的***,要能够实现广告主、媒体商和广告投放***运营者多方共赢的目标,使更多的广告高效地按需投放,使媒体商的广告屏资源得到充分合理的利用。
数字标牌企业现有的数字标牌广告投放***,还主要采用人工交互方式选屏、静态的预排期方法排期,难以满足海量订单以及处理万台以上数字标牌的广告投放业务的需求。另一方面,传统的人工交互方式选屏由于缺乏有效的信息组织和收集方法,只能针对地理位置等有限的广告屏属性进行选屏,而难以综合地理位置、受众特征、商业环境等多维度的约束条件进行选屏;传统的半自动化排期方法难以应对广告投放业务的即时变化,存在时间碎片多、屏幕利用率低的问题。
发明内容
本发明的目的在于实现一种基于Storm平台的分布式数字标牌广告投放方法,将选屏任务和排期任务部署在基于Hadoop集群Storm流计算框架上并行执行;根据订单的选屏排期要求,以及广告屏的开关机时间、屏位的空闲时间段等条件,为每个订单选择屏位,并在每个屏位上为订单广告排期,生成排期列表,并发送给播放端。
本发明的方法分为5个阶段:搭建基于Storm平台的选屏排期框架-接收服务器发来的订单消息-为每个订单选择合适的屏位-为每个屏位进行广告排期并保存至Redis数据库-更新订单状态,具体过程包括:1)搭建基于Storm平台的选屏排期处理框架:该框架包含4个连续的任务阶段,读订单,选屏,排期,更新订单状态,按照前后顺序形成多任务段流水线;4个任务阶段分别由一个发射源(Spout)和三个处理单元(Bolt)来实施;其中在选屏和排期任务阶段,可以同时并行运行多个任务,每个任务分别对应于一个订单或者一个屏位;2)接收服务器发来的订单消息:发射源读订单任务接收订单服务器发来的订单消息,发给选屏处理单元(SSBolt);3)为每个订单选择合适的屏位:选屏处理单元为每个订单启动一个选屏任务,根据每个订单中提供的地理位置、受众特征、商业环境等多维度的约束条件,为每个广告订单选择合适的屏位;4)为每个屏位进行广告排期:排期处理单元(SCBolt)为每个屏位启动一个排期任务,对排在该屏位上的每个订单,按照订单中设定的时间约束条件、屏位空闲时间段等进行排期,生成该屏位的排期列表以及每个订单独立的排期列表,存入Redis数据库;5)更新订单状态:状态处理单元(ResultBolt)判断每个订单在每个屏位上的排期次数,如果满足订单要求,则修改订单状态为已排期状态,否则置为失败状态。
具体来说,本发明的方法包括下列步骤:
A.搭建基于Storm平台的选屏排期框架:该框架包含读订单,选屏,排期,更新订单状态四个连续任务阶段,分别由读订单处理单元(OrderSocketSpout)、选屏处理单元(SSBolt)、排期处理单元(SCBolt)和状态处理单元(ResultBolt)组成,具体实现如下:
A1.OrderSocketSpout从Socket服务器读取订单信息,并将一个订单的所有信息打包成一个元组(tuple),并发射给SSBolt;
所述的元组(tuple)指一次订单消息传递的基本单元,源源不断传递的tuple组成数据流(stream);
A2.SSBolt为每个订单启动一个选屏任务,根据接收到的订单的地理位置、受众特征、商业环境等多维度的约束条件,进行精准选屏,得到每个订单的屏位集合;并合并每个屏位上的订单ID,形成集合;将屏位ID、订单ID、以及该订单在该屏位上分配的次数打包成元组,发射给SCBolt;
A3.SCBolt每接到一个元组,为元组指定的屏位ID启动一个排期任务,为该屏位上的订单ID,按照订单约束条件和屏位空闲时间段排期,生成排期列表;将屏位ID、订单ID、以及未排完的次数打包成元组,发射给ResultBolt;
A4.ResultBolt接收到步骤A3发来的元组,累计该订单未排完的次数,如果累计未排完次数为0,则修改订单状态为已排期状态;否则修改订单状态为排期失败状态;
B.读订单发射源(OrderSocketSpout)接收Socket服务器发来的订单消息,以元组形式发射给SSBolt选屏处理单元,具体实现如下:
B1.OrderSocketSpout与Socket服务器建立连接;
B2.OrderSocketSpout最初接收到的订单信息是以<xml>为开端,<\xml>为结尾格式的订单,找到订单中以<Order>为开端,</Order>为结尾的部分内容;
B3.截取B2所找到的内容,将订单格式修改为以<Order>为开端,</Order>为结尾格式的订单;
B4.将这个订单信息以元组形式发射给SSBolt;
C.SSBolt为每个订单选择合适的屏位:根据接收到的订单的媒体商ID、标签集合、要求的广告屏以及屏位宽高尺寸、要求的地理位置以及广告屏的相容互斥标签,为这个订单启动一个选屏任务,进行精准选屏;将屏位ID、订单ID、以及该订单在该屏位上分配的排期次数打包成元组,发射给SCBolt;
D.根据订单要求的总次数、播放频次,计算订单在该屏位上每天应当播放的次数,具体实现如下:
D1.分别算出一天秒值(oneday)、起始日期秒值(sday)、明天日期秒值(tomorow)、结束日期秒值(eday),在起始日期秒值与明天日期秒值中取较大值作为起始日期;
D2.把总次数分摊到从起始日期到结束日期的每一天,计算每天应播放的次数,具体实现如下:
D2.1根据days=(eday-sday)/oneday算出播放此广告需要的天数;
D2.2根据订单要求的每天最多播放的次数(ad_frequency),计算每天播放的次数:
D2.2.1如果days*ad_frequency>没有被排期的订单的次数(not_play),则计算频次(times)=not_play/days,剩余没有被排期的订单(left)=(not_play-times*days),left再根据剩余的天数安排每天播放的次数;
D2.2.2如果days*ad_frequency<=not_play,则根据ad_frequency来安排每天播放的次数;
E.将广告屏的时间段采用时间轨道的方法管理,具体实现如下:
所述的时间段(segments)记为[秒值(time),秒长(tlen)];秒值time表示距离当天0时0分0秒的秒数;秒长tlen表示时间段的秒数;
所述的时间轨道是一个用二进制长字节字符串(bytes)表示的时间段,每一个二进制位代表1秒,0表示空闲,1表示被占用;
E1.将一个被占用的时间段(segments)[time,tlen]转换为时间轨道(bytes)的算法(SegmentsToBytes),具体实现如下:
E1.1定义一个二进制长字节字符串(右端为低位0)表示的空时间轨道;
E1.2在时间轨道中,把从time开始的tlen位二进制位串置为1,具体实现如下:
将1左移tlen个长度,将其结果减1,将减1的结果向左移time个长度,得到从time开始向右的tlen位为1的二进制位串;
E2.将一个时间轨道转换为时间段的算法(BytesToSegment),具体实现如下:
在时间轨道中,判断从多少位开始是1,开始记录time,再判断多少位的时候变回0,记录为tlen,具体实现如下:
从最低位0位开始数,右移计数,右移n次如果发现最低位变1了,则说明n+1位是1,如此往复,最终得到此二进制串所相对应的[time,tlen];
E3.合并两个时间段的算法,具体实现如下:
先利用SegmentsToBytes分别将两个时间段转化为时间轨道,再将两个时间轨道做逻辑或运算得到新的时间轨道,将结果时间轨道利用BytessToSegment转化为[time,tlen];
E4.求两个时间段的交集时间:利用SegmentsToBytes分别将两个时间段转化为时间轨道,再将两个时间轨道做逻辑与运算得到新的时间轨道,将结果时间轨道利用BytessToSegment转化为[time,tlen];
E5.判断两个时间段是否有重叠:求两个时间段的交集,结果如果大于0,则有重叠;
E6.切除引起互斥的时间轨道,具体实现如下:
E6.1读取订单的互斥标签和订单的互斥时间段;
E6.2如果其他广告没有引起互斥,原有时间轨道不需要切除;如果其他广告会引起互斥,则切除互斥时间段;
F.SCBolt为每个屏位ID启动一个排期任务,为该屏位上的订单ID排期,将排期结果保存至Redis数据库,具体实现如下:
F1.获取屏位的当天的时间轨道;如果当天时间轨道为空,就读取空闲时间段,转换成时间轨道;
如果没有当天的空闲时间段,就循环读取前一天的空闲时间段,转换成时间轨道;
如果没有从前的空闲时间段,就读取开机时间到关机时间的一段时间为空闲时间段,转换为时间轨道;这个过程中形成的空闲时间段和时间轨道,都要保存在Redis数据库中,供下次排期使用;具体实现如下:
F1.1给定屏位ID和日期,以“Area:area_id:day:time_track_list”作为键,利用Redis的lrange命令返回当天时间轨道列表;
F1.2如果列表为空,就读取屏位的当天的空闲时间段(free_duration);并转换成长整数空闲时间,以日期为键,以字典形式保存在Redis库中,再转换为时间轨道列表,并统计该屏位当天的空闲时间总长度;
所述的空闲时间段是以[“年-月-日时:分:秒”,时间长度]格式存储的时间段信息;
所述的长整数空闲时间是[以从1970年1月1日0点开始计算的以秒为单位的长整数,[起始时间,时间长度]格式存储的时间段信息;
具体实现如下:
F1.2.1以“Area:area_id:day:freeTime_duration”作为键,利用Redis的smembers命令返回集合中属于此屏位的所有的空闲时间段;
F1.2.2将空闲时间段(freeTime_duration)转换为长整数空闲时间;
F1.2.3将长整数空闲时间以字典形式保存在Redis库里;字典的键是日期,值是长整数空闲时间;格式为{day:[[day,duration],…]}:
以“Area:area_id+日期:free_time_list”作为键,利用Redis的lpush命令将长整数空闲时间***到空闲时间列表中;
所述的空闲时间列表,就是以“屏位ID+日期”为键的,以长整数空闲时间列表为值的Redis中的字典数据结构;
F1.2.4将空闲时间列表中的值转化为时间轨道:
F1.2.5计算此屏位当天的空闲时间总长度,以“Area:area_id:day:total_free_time”为键,保存在Redis数据库中;
F1.3如果没有当天的空闲时间段,则循环读取前一天的空闲时间段,作为当天的空闲时间段,并转换为时间轨道;同时还将该时间轨道保存在Redis数据库中,作为当天的时间轨道,供下次排期使用;
F1.4如果该屏位循环读取从前的空闲时间段,也没有记录,则读取该屏的开关机时间,作为其空闲时间段,并将其转换为空闲时间列表和时间轨道,并保存在Redis数据库里,供下次排期使用;
F2.根据订单的广告播放时间要求和屏上已经排期的订单的互斥约束条件,切除不可用时间段,得到可用的时间轨道;具体实现如下:
F2.1读取订单中广告的播放时间要求,形成在该屏位上的可播放时间段,并将此时间段与屏位时间轨道做交集运算,得出此订单在此屏位上的可用时间轨道;
F2.2为屏定义一个互斥标签时间轨道集合,该集合的每个元素里包含一组(标签集合,时间轨道),一组标签集合包含该屏上已排期的订单的广告行业标签,以及该订单声明的互斥标签,时间轨道即为该订单已经占用的屏位的时间轨道;
所述的订单声明的互斥标签,表示该订单在该屏位上播放的时间段内,不允许具有该广告行业标签的其他订单在同一块屏的其他屏位上排期;
如果有新订单的广告行业标签或者订单声明的互斥标签被该互斥标签集合包含,则新订单的时间轨道与该集合中的标签对应的时间轨道的交集,要从新订单的时间轨道中切掉;
如果该新订单已经在该屏上排期,则该订单的广告行业标签以及其排期的时间轨道将被保存中这个集合里;如果该订单声明了互斥标签,则该订单的互斥标签也被保存进入这个互斥标签时间轨道集合;
F2.3根据订单的广告行业标签,从可用时间轨道中切去该订单不能使用的时间段,形成最终的可用时间轨道;具体实现如下:
F2.3.1读取订单的广告行业标签;
F2.3.2读取屏的互斥标签时间轨道集合;比较判断广告行业标签是否在这个集合里;
F2.3.3如果该订单的广告标签与这个集合有交集,这时读取交集中的标签及其对应的时间轨道,从订单的可用时间轨道中切除该标签对应的时间轨道;
F2.4如果该订单有互斥标签,则从可用时间轨道中切去该订单不能使用的时间段,形成最终的可用时间轨道;具体实现如下:
F2.4.1读取订单的互斥标签;
F2.4.2读取屏的互斥标签时间轨道集合;比较判断订单的互斥标签是否在这个集合里;
F2.4.3如果该订单的互斥标签与这个集合有交集,则读取交集中的标签及其对应的时间轨道,从订单的可用时间轨道中切除该标签对应的时间轨道;
F2.5当该订单排期结束之后,把该订单的广告行业标签、互斥标签、以及订单在屏位上的排期时间轨道,存入这个屏互斥标签时间轨道集合中;
F3.对当天的一个订单进行排期,把订单尽量均分在屏位空闲时间段内,且保证订单要求的最小间隔,具体实现如下:
F3.1一个广告周期(ad_total)=广告播放时长(ad_len)+订单要求的最小间隔(ad_intv),如果ad_len>时间轨道的空闲秒数(total_sec),则无法排期;
F3.2如果total_sec>ad_len*订单要播放的次数(times)(时间轨道的空闲秒数足够多),计算新的两次广告播放时间间隔(ad_max_intv)=total_sec/times-ad_len,并计算新的广告周期(ad_max_total)=ad_len+ad_max_intv;
F3.3实现订单要求的最小间隔,具体实现如下:
F3.3.1计算空闲时间结束点(end)=空闲时间起始点(start)+空闲长度(length),计算下次广告播放的起始时间点(st)=上次广告播放的起始时间点(last_start_pos)+广告周期(ad_total);
F3.3.2为了保证订单要求的最小间隔,当st<空闲时间起始点(start)时,st=start;
F3.4把订单尽量均分在屏位空闲时间段内,实现一个新广告周期(delta),具体实现如下:
F3.4.1如果st+ad_len<=end,再排广告将在时间轨道上剩余的空闲时间段(length-ad_len)与ad_max_total比较大小,取其中较小值;
F3.4.2因为delta的值至少要达到ad_total,所以将F3.4.1得出的结果与ad_total比较大小,取其中较大值,此值就是delta;
F3.5根据F3.4.2结果,就修改排期统计计数:广告播放起始点st就要加一次新广告周期delta,空闲时间长度length就要减一次广告周期delta;
F3.6循环F3.4~F3.5,如果符合st+ad_len<=end条件,就把这一次广告排期结果写入排期列表;
F4.排期完毕,更新排期后的时间轨道,同时将排期列表保存在Redis数据库中,具体实现如下:
F4.1更新排期后的时间轨道,具体实现如下:
F4.1.1以“Area:area_id:day+时间轨道列表”作为键,根据键删除所对应的键值,即排期完成的该屏该天的时间轨道;
F4.1.2利用Redis的rpush命令分别将新的可用时间段(起始点,长度)列表加到键的值中;
F4.2把屏位的排期列表入库,具体实现如下:
F4.2.1根据广告ID返回广告信息,包括广告商ID,广告名称,广告类别,广告时长,广告在屏幕上最大宽、高像素值,广告播放时的缩放系数等;
F4.2.2根据广告播放起始时间列表、广告时长列表、订单号列表、广告素材文件的目录路径,以[起始时间,播放时长,订单号,路径]格式形成订单排期列表,入库;
G.状态处理单元(ResultBolt)更新订单状态,累计该订单未排完的次数,如果累计未排完次数为0,则修改订单状态为已排期状态,否则修改订单状态为排期失败状态,具体实现如下:
G1.将未被排期次数加到原来未排期次数上,具体实现如下:
G1.1利用Redis的get命令,以“order:order_id:ScheduleRest”作为键取出未排期次数;
G1.2将G1.1取出的未排期次数加上本次的未排期次数,得到此订单的未排期次数(res);
G1.3利用Redis的set命令,以“order:order_id:ScheduleRest”作为键,将未排期次数存入Redis库;
G2.更改订单状态:利用Redis的set命令,以“order:order_id:status”作为键,保存订单状态到Redis库。
本发明的目的在于实现一种基于Storm平台的分布式数字标牌广告投放方法,其投放过程分为:搭建基于Storm平台的选屏排期框架-接收服务器发来的订单消息-为每个订单选择合适的屏位-为每个屏位进行广告排期并保存至Redis数据库-更新订单状态五个阶段。本发明经实验表明,其优点是算法高效稳定、能够避免排期冲突、大大降低碎片率,提高广告位的资源利用率。
附图说明
图1:基于Storm平台的分布式数字标牌广告投放流程图
具体实施方式
下面结合附图,通过设计4个广告订单,并根据订单要求的地理约束条件、时间约束条件、屏位空闲时间段等进行基于Storm平台投放的过程的说明,作为实施例对本发明作进一步描述。
方法流程图如图1所示。本发明方法包括:1)搭建基于Storm平台的选屏排期处理框架:该框架包含4个连续的任务阶段,读订单,选屏,排期,更新订单状态,按照前后顺序形成多任务段流水线;4个任务阶段分别由一个发射源(Spout)和三个处理单元(Bolt)来实施;其中在选屏和排期任务阶段,可以同时并行运行多个任务,每个任务分别对应于一个订单或者一个屏位;2)接收服务器发来的订单消息:发射源读订单任务接收订单服务器发来的订单消息,发给选屏处理单元(SSBolt);3)为每个订单选择合适的屏位:选屏处理单元为每个订单启动一个选屏任务,根据每个订单中提供的地理位置、受众特征、商业环境等多维度的约束条件,为每个广告订单选择合适的屏位;4)为每个屏位进行广告排期:排期处理单元(SCBolt)为每个屏位启动一个排期任务,对排在该屏位上的每个订单,按照订单中设定的时间约束条件、屏位空闲时间段等进行排期,生成该屏位的排期列表以及每个订单独立的排期列表,存入Redis数据库;5)更新订单状态:状态处理单元(ResultBolt)判断每个订单在每个屏位上的排期次数,如果满足订单要求,则修改订单状态为已排期状态;否则置为失败状态。
下面按照步骤,结合实例对本发明作进一步描述:
1.OrderSocketSpout接收服务器发来的4个订单ID信息如下:
2.选屏处理单元为每个订单启动一个选屏任务,为每个订单选择合适的屏位,并合并每个屏位上的订单ID,形成集合:
选屏处理单元为这4个订单选取的广告屏ID是4000000120000001,屏位ID及其部分空闲时间是:
为上述两个屏位合并每个屏位上的订单ID,形成集合;并为每个屏位分配每个订单在该屏位上的拟播放次数;其中以屏位40000001200000011001为例,在2015-08-02的待排期广告ID及其播放次数如下:
3.排期处理单元为每个屏位(以屏位40000001200000011001为例)启动一个排期任务,并为这个屏位进行广告排期,将结果存入Redis数据库:
3.1把总次数分摊到从上刊日到下刊日的每一天,计算每天应播放的次数:
订单ID 频次 上刊日期 下刊日期 播放天数 每天播放次数
20150801 80 2015-07-28 2015-09-05 40 2
20150802 60 2015-07-24 2015-09-24 30 2
20150803 50 2015-07-15 2015-08-09 25 2
20140804 35 2015-07-28 2015-08-03 7 5
3.2屏位40000001200000011001的三个空闲时间段分别是[08:05:00,25]、[10:10:10,30]、[15:20:05,35]、[17:40:10,40];在此屏位上以订单20150801为例进行排期:
3.2.1广告周期(ad_total)=30+350=400(s),根据广告周期和广告时长以及屏位空闲时间段,可确定在2015-08-02这一天屏位40000001200000011001上的4个订单的排期列表如下:
起始时间 时长 订单ID 路径
36610 30 20150801 E://
63610 40 20150802 E://
36665 35 20150803 E://
29100 25 20140804 E://
3.2.2将3.2.1排期列表入库;
4.累计该订单未排完的次数为0,修改该订单状态为已排期状态。
本发明的方法实现了基于Storm平台的分布式数字标牌广告投放方法,通过5个步骤能够在订单地理、时间约束条件以及屏位空闲时间段下,快速地为订单选择出合适的屏位集合,并生成屏位排期列表,具有很高的商业价值和经济效益。
最后需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

Claims (9)

1.一种基于Storm平台的分布式数字标牌广告投放方法,其步骤包括:
A.搭建基于Storm平台的选屏排期框架:该框架包含读订单,选屏,排期,更新订单状态四个连续任务阶段,分别由读订单处理单元、选屏处理单元、排期处理单元和状态处理单元组成,具体实现如下:
A1.读订单处理单元从Socket服务器读取订单信息,并将一个订单的所有信息打包成一个元组,并发射给选屏处理单元;
A2.选屏处理单元为每个订单启动一个选屏任务,根据接收到的订单的地理位置、受众特征、商业环境等多维度的约束条件,进行精准选屏,得到每个订单的屏位集合;并合并每个屏位上的订单ID,形成集合;将屏位ID、订单ID、以及该订单在该屏位上分配的次数打包成元组,发射给排期处理单元;
A3.排期处理单元每接到一个元组,为元组指定的屏位ID启动一个排期任务,为该屏位上的订单ID,按照订单约束条件和屏位空闲时间段排期,生成排期列表;将屏位ID、订单ID、以及未排完的次数打包成元组,发射给状态处理单元;
A4.状态处理单元接收到步骤A3发来的元组,累计该订单未排完的次数,如果累计未排完次数为0,则修改订单状态为已排期状态;否则修改订单状态为排期失败状态;
B.读订单处理单元接收Socket服务器发来的订单消息,以元组形式发射给选屏处理单元,具体实现如下:
B1.读订单处理单元与Socket服务器建立连接;
B2.读订单处理单元最初接收到的订单信息是以<xml>为开端,<\xml>为结尾格式的订单,找到订单中以<Order>为开端,</Order>为结尾的部分内容;
B3.截取B2所找到的内容,将订单格式修改为以<Order>为开端,</Order>为结尾格式的订单;
B4.将这个订单信息以元组形式发射给选屏处理单元;
C.选屏处理单元为每个订单选择合适的屏位:根据接收到的订单的媒体商ID、标签集合、要求的广告屏以及屏位宽高尺寸、要求的地理位置以及广告屏的相容互斥标签,为这个订单启动一个选屏任务,进行精准选屏;将屏位ID、订单ID、以及该订单在该屏位上分配的排期次数打包成元组,发射给排期处理单元;
D.根据订单要求的总次数、播放频次,计算订单在该屏位上每天应当播放的次数,具体实现如下:
D1.分别算出一天秒值、起始日期秒值、明天日期秒值、结束日期秒值,在起始日期秒值与明天日期秒值中取较大值作为起始日期秒值;
D2.把总次数分摊到从起始日期到结束日期的每一天,计算每天应播放的次数;
E.将广告屏的时间段采用时间轨道的方法管理,具体实现如下:
E1.将一个被占用的时间段[time,tlen]转换为时间轨道的算法,具体实现如下:
E1.1定义一个二进制长字节字符串(右端为低位0)表示的空时间轨道;
E1.2在时间轨道中,把从time开始的tlen位二进制位串置为1,具体实现如下:
将1左移tlen个长度,将其结果减1,将减1的结果向左移time个长度,得到从time开始向右tlen位为1的二进制位串;
E2.将一个时间轨道转换为时间段的算法,具体实现如下:
在时间轨道中,判断从多少位开始是1,开始记录time,再判断多少位的时候变回0,记录为tlen,具体实现如下:
从右边最低0位开始数,右移计数,右移n次如果发现数位变1了,则说明n+1位是1,如此往复,最终得到此二进制串所相对应的[time,tlen];
E3.合并两个时间段的算法,具体实现如下:
先分别将两个时间段转化为时间轨道,再将两个时间轨道做逻辑或运算得到新的时间轨道,将结果时间轨道转化为时间段[time,tlen];
E4.求两个时间段的交集时间:分别将两个时间段转化为时间轨道,再将两个时间轨道做逻辑与运算得到新的时间轨道,将结果时间轨道转化为[time,tlen];
E5.判断两个时间段是否有重叠:求两个时间段的交集,结果如果大于0,则有重叠;
E6.切除引起互斥的时间轨道,具体实现如下:
E6.1读取订单的互斥标签和订单的互斥时间段;
E6.2如果其他广告没有引起互斥,原有时间轨道不需要切除;如果其他广告会引起互斥,则切除互斥时间段;
F.排期处理单元为每个屏位ID启动一个排期任务,为该屏位上的订单ID排期,将排期结果保存至Redis数据库,具体实现如下:
F1.获取屏位的当天的时间轨道;如果当天时间轨道为空,就读取空闲时间段,转换成时间轨道;
如果没有当天的空闲时间段,就循环读取前一天的空闲时间段,转换成时间轨道;
如果没有从前的空闲时间段,就读取开机时间到关机时间的一段时间为空闲时间段,转换为时间轨道;
这个过程中形成的空闲时间段和时间轨道,都要保存在Redis数据库中,供下次排期使用;具体实现如下:
F1.1给定屏位ID和日期,以“Area:area_id:day:time_track_list”作为键,利用Redis的lrange命令返回当天时间轨道列表;
F1.2如果列表为空,就读取屏位的当天的空闲时间段;并转换成长整数空闲时间,以日期为键,以字典形式保存在Redis库中,再转换为时间轨道列表,并统计该屏位当天的空闲时间总长度;
F1.3如果没有当天的空闲时间段,则循环读取前一天的空闲时间段,作为当天的空闲时间段,并转换为时间轨道;同时还将该时间轨道保存在Redis数据库中,作为当天的时间轨道,供下次排期使用;
F1.4如果该屏位循环读取从前的空闲时间段,也没有记录,则读取该屏的开关机时间,作为其空闲时间段,并将其转换为空闲时间列表和时间轨道,并保存在Redis数据库里,供下次排期使用;
F2.根据订单的广告播放时间要求和屏上已经排期的订单的互斥约束条件,切除不可用时间段,得到可用的时间轨道;具体实现如下:
F2.1读取订单中广告的播放时间要求,形成在该屏位上的可播放时间段,并将此时间段与屏位时间轨道做交集运算,得出此订单在此屏位上的可用时间轨道;
F2.2为屏定义一个互斥标签时间轨道集合,该集合的每个元素里包含一组(标签集合,时间轨道),一组标签集合包含该屏上已排期的订单的广告行业标签,以及该订单声明的互斥标签,时间轨道即为该订单已经占用的屏位的时间轨道;
如果有新订单的广告行业标签或者订单声明的互斥标签被该互斥标签集合包含,则要从新订单的时间轨道中切掉:新订单的时间轨道与该集合中的标签对应的时间轨道的交集;
该新订单在该屏上排期之后,则该订单的广告行业标签以及其排期的时间轨道将被保存中这个集合里;如果该订单声明了互斥标签,则该订单的互斥标签也被保存进入这个互斥标签时间轨道集合;
F2.3根据订单的广告行业标签,从可用时间轨道中切去该订单不能使用的时间段,形成最终的可用时间轨道;
F2.4如果该订单有互斥标签,则从可用时间轨道中切去该订单不能使用的时间段,形成最终的可用时间轨道;
F2.5当该订单排期结束之后,把该订单的广告行业标签、互斥标签、以及订单在屏位上的排期时间轨道,存入这个屏互斥标签时间轨道集合中;
F3.对当天的一个订单进行排期,把订单尽量均分在屏位空闲时间段内,且保证订单要求的最小间隔,具体实现如下:
F3.1一个广告周期=广告播放时长+订单要求的最小间隔,如果广告播放时长>时间轨道的空闲秒数,则无法排期;
F3.2如果时间轨道的空闲秒数>广告播放时长*订单要播放的次数,计算新的两次广告播放时间间隔,并计算新的广告周期;
F3.3实现订单要求的最小间隔;
F3.4把订单尽量均分在屏位空闲时间段内,实现一个新的广告周期;
F3.5每排完一次广告,就修改排期统计计数;
F3.6循环F3.4~F3.5,把这次广告排期结果写入排期列表;
F4.排期完毕,更新排期后的时间轨道,同时将排期列表保存在Redis数据库中,具体实现如下:
F4.1更新排期后的时间轨道;
F4.2把屏位的排期列表入库;
G.状态处理单元更新订单状态,累计该订单未排完的次数,如果累计未排完次数为0,则修改订单状态为已排期状态,否则修改订单状态为排期失败状态,具体实现如下:
G1.将未被排期次数加到原来未排期次数上,具体实现如下:
G2.更改订单状态。
2.如权利要求1所述的基于Storm平台的分布式数字标牌广告投放方法,其特征在于,把总次数分摊到从起始日期到结束日期的每一天,计算每天应播放的次数,具体实现如下:
D2.1根据天数=(结束日期秒数–起始日期秒数)/一天的秒数算出播放此广告需要的天数;
D2.2根据订单要求的每天最多播放的次数,计算每天播放的次数:
D2.2.1如果天数*频率>没有被排期的订单的次数,则计算频次=没排期次数/天数,剩余没有被排期的订单=(没排期次数-次数*天数),再根据剩余的天数安排每天播放的次数;
D2.2.2如果天数*频率<=没排期次数,则根据频率来安排每天播放的次数。
3.如权利要求1所述的基于Storm平台的分布式数字标牌广告投放方法,其特征在于,如果列表为空,就读取屏位的当天的空闲时间段;并转换成长整数空闲时间,以日期为键,以字典形式保存在Redis库中,再转换为时间轨道列表,并统计该屏位当天的空闲时间总长度;
具体实现如下:
F1.2.1以“Area:area_id:day:freeTime_duration”作为键,利用Redis的smembers命令返回集合中属于此屏位的所有的空闲时间段;
F1.2.2将空闲时间段转换为长整数空闲时间;
F1.2.3将长整数空闲时间以字典形式保存在Redis库里;字典的键是日期,值是长整数空闲时间;格式为{day:[[day,duration],…]}:
以“Area:area_id+日期:free_time_list”作为键,利用Redis的lpush命令将长整数空闲时间***到空闲时间列表中;
F1.2.4将空闲时间列表中的值转化为时间轨道:
F1.2.5计算此屏位当天的空闲时间总长度,以“Area:area_id:day:total_free_time”为键,保存在Redis数据库中。
4.如权利要求1所述的基于Storm平台的分布式数字标牌广告投放方法,其特征在于,根据订单的广告行业标签,从可用时间轨道中切去该订单不能使用的时间段,形成最终的可用时间轨道;具体实现如下:
F2.3.1读取订单的广告行业标签;
F2.3.2读取屏的互斥标签时间轨道集合;比较判断广告行业标签是否在这个集合里;
F2.3.3如果该订单的广告标签与这个集合有交集,这时读取交集中的标签及其对应的时间轨道,从订单的可用时间轨道中切除该标签对应的时间轨道。
5.如权利要求1所述的基于Storm平台的分布式数字标牌广告投放方法,其特征在于,如果该订单有互斥标签,则从可用时间轨道中切去该订单不能使用的时间段,形成最终的可用时间轨道;具体实现如下:
F2.4.1读取订单的互斥标签;
F2.4.2读取屏的互斥标签时间轨道集合;比较判断订单的互斥标签是否在这个集合里;
F2.4.3如果该订单的互斥标签与这个集合有交集,则读取交集中的标签及其对应的时间轨道,从订单的可用时间轨道中切除该标签对应的时间轨道。
6.如权利要求1所述的基于Storm平台的分布式数字标牌广告投放方法,其特征在于,实现订单要求的最小间隔,具体实现如下:
F3.3.1计算空闲时间结束点=空闲时间起始点+空闲长度,计算下次广告播放的起始时间点=上次广告播放的起始时间点+广告周期;
F3.3.2为了保证订单要求的最小间隔,当广告播放的起始时间点<空闲时间起始点时,广告播放的起始时间点=空闲时间起始点。
7.如权利要求1所述的基于Storm平台的分布式数字标牌广告投放方法,其特征在于,把订单尽量均分在屏位空闲时间段内,实现一个新广告周期,具体实现如下:
F3.4.1如果广告播放的起始时间点+广告时长<=空闲时间结束点,再排广告将在时间轨道上剩余的空闲时间段与广告最大总时间比较大小,取其中较小值;
F3.4.2因为新广告周期的值至少要达到广告周期,所以将F3.4.1得出的结果与广告周期比较大小,取其中较大值,此值就是新广告周期。
8.如权利要求1所述的基于Storm平台的分布式数字标牌广告投放方法,其特征在于,更新排期后的时间轨道,具体实现如下:
F4.1.1以“Area:area_id:day+时间轨道列表”作为键,根据键删除所对应的键值,即排期完成的该屏该天的时间轨道;
F4.1.2利用Redis的rpush命令分别将新的可用时间段(起始点,长度)列表加到键的值中。
9.如权利要求1所述的基于Storm平台的分布式数字标牌广告投放方法,其特征在于,把屏位的排期列表入库,具体实现如下:
F4.2.1根据广告ID返回广告信息,包括广告商ID,广告名称,广告类别,广告时长,广告在屏幕上最大宽、高像素值,广告播放时的缩放系数等;
F4.2.2根据广告播放起始时间列表、广告时长列表、订单号列表、广告素材文件的目录路径,以[起始时间,播放时长,订单号,路径]格式形成订单排期列表,入库。
CN201510583827.4A 2015-09-14 2015-09-14 一种基于Storm平台的分布式数字标牌广告投放方法 Active CN105184614B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510583827.4A CN105184614B (zh) 2015-09-14 2015-09-14 一种基于Storm平台的分布式数字标牌广告投放方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510583827.4A CN105184614B (zh) 2015-09-14 2015-09-14 一种基于Storm平台的分布式数字标牌广告投放方法

Publications (2)

Publication Number Publication Date
CN105184614A true CN105184614A (zh) 2015-12-23
CN105184614B CN105184614B (zh) 2018-08-24

Family

ID=54906672

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510583827.4A Active CN105184614B (zh) 2015-09-14 2015-09-14 一种基于Storm平台的分布式数字标牌广告投放方法

Country Status (1)

Country Link
CN (1) CN105184614B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106790394A (zh) * 2016-11-25 2017-05-31 北京掌行通信息技术有限公司 一种广告播放列表的更新方法及服务器
CN107220860A (zh) * 2017-07-26 2017-09-29 重庆颇闰科技有限公司 广告排期方法
CN107292677A (zh) * 2017-07-26 2017-10-24 重庆颇闰科技有限公司 一种广告排期方法
CN107358457A (zh) * 2017-06-07 2017-11-17 浙江大华技术股份有限公司 一种广告播放方法、装置及***
CN107370780A (zh) * 2016-05-12 2017-11-21 腾讯科技(北京)有限公司 基于互联网的媒体推送方法、装置和***
CN107562869A (zh) * 2017-08-30 2018-01-09 杭州联驱科技有限公司 广告屏控制方法及设备
WO2018137588A1 (zh) * 2017-01-24 2018-08-02 腾讯科技(深圳)有限公司 媒体内容投放方法、装置、***及存储介质
CN109712054A (zh) * 2018-12-28 2019-05-03 杭州文创企业管理有限公司 一种智慧园区公共服务平台
CN111667323A (zh) * 2020-06-30 2020-09-15 成都新潮传媒集团有限公司 一种广告点位的余量调度方法、装置及计算机设备
CN112598447A (zh) * 2020-12-28 2021-04-02 加和(北京)信息科技有限公司 订单信息的处理方法及装置、电子设备及处理器
CN113282743A (zh) * 2021-06-03 2021-08-20 北京得间科技有限公司 信息展示方法、电子设备及存储介质
CN113365151A (zh) * 2020-03-04 2021-09-07 分众(中国)信息技术有限公司 一种广告排片中的互斥方法
CN114445100A (zh) * 2020-10-30 2022-05-06 阿里巴巴集团控股有限公司 广告排期方法、装置、电子设备及计算机可读介质
US11930231B2 (en) 2021-01-13 2024-03-12 Jcdecaux Sa Digital display method and system, digital display device and digital display server

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN201877084U (zh) * 2010-08-05 2011-06-22 艾德倚天科技无锡有限公司 一种数字标牌***
WO2012046928A1 (ko) * 2010-10-07 2012-04-12 엘지전자 주식회사 디스플레이 디바이스를 이용한 광고 컨텐츠 제작 방법 및 그에 따른 디스플레이 디바이스
CN102842290A (zh) * 2012-08-14 2012-12-26 Tcl数码科技(深圳)有限责任公司 一种数字标牌***信息显示的方法及装置
CN103400281A (zh) * 2013-07-16 2013-11-20 Tcl商用信息科技(惠州)股份有限公司 一种数字标牌***及其播放方法
CN103760968A (zh) * 2013-11-29 2014-04-30 理光软件研究所(北京)有限公司 数字标牌显示内容选择方法和装置
US20140122248A1 (en) * 2011-09-13 2014-05-01 Andrew Kuzama Digital Advertising System
CN104113909A (zh) * 2013-04-16 2014-10-22 苏州和积信息科技有限公司 数字标牌的定位方法和***

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN201877084U (zh) * 2010-08-05 2011-06-22 艾德倚天科技无锡有限公司 一种数字标牌***
WO2012046928A1 (ko) * 2010-10-07 2012-04-12 엘지전자 주식회사 디스플레이 디바이스를 이용한 광고 컨텐츠 제작 방법 및 그에 따른 디스플레이 디바이스
US20140122248A1 (en) * 2011-09-13 2014-05-01 Andrew Kuzama Digital Advertising System
CN102842290A (zh) * 2012-08-14 2012-12-26 Tcl数码科技(深圳)有限责任公司 一种数字标牌***信息显示的方法及装置
CN104113909A (zh) * 2013-04-16 2014-10-22 苏州和积信息科技有限公司 数字标牌的定位方法和***
CN103400281A (zh) * 2013-07-16 2013-11-20 Tcl商用信息科技(惠州)股份有限公司 一种数字标牌***及其播放方法
CN103760968A (zh) * 2013-11-29 2014-04-30 理光软件研究所(北京)有限公司 数字标牌显示内容选择方法和装置

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107370780B (zh) * 2016-05-12 2020-06-26 腾讯科技(北京)有限公司 基于互联网的媒体推送方法、装置和***
CN107370780A (zh) * 2016-05-12 2017-11-21 腾讯科技(北京)有限公司 基于互联网的媒体推送方法、装置和***
CN106790394A (zh) * 2016-11-25 2017-05-31 北京掌行通信息技术有限公司 一种广告播放列表的更新方法及服务器
WO2018137588A1 (zh) * 2017-01-24 2018-08-02 腾讯科技(深圳)有限公司 媒体内容投放方法、装置、***及存储介质
CN107358457A (zh) * 2017-06-07 2017-11-17 浙江大华技术股份有限公司 一种广告播放方法、装置及***
CN107220860A (zh) * 2017-07-26 2017-09-29 重庆颇闰科技有限公司 广告排期方法
CN107292677A (zh) * 2017-07-26 2017-10-24 重庆颇闰科技有限公司 一种广告排期方法
CN107562869A (zh) * 2017-08-30 2018-01-09 杭州联驱科技有限公司 广告屏控制方法及设备
CN109712054A (zh) * 2018-12-28 2019-05-03 杭州文创企业管理有限公司 一种智慧园区公共服务平台
CN113365151A (zh) * 2020-03-04 2021-09-07 分众(中国)信息技术有限公司 一种广告排片中的互斥方法
CN111667323A (zh) * 2020-06-30 2020-09-15 成都新潮传媒集团有限公司 一种广告点位的余量调度方法、装置及计算机设备
CN114445100A (zh) * 2020-10-30 2022-05-06 阿里巴巴集团控股有限公司 广告排期方法、装置、电子设备及计算机可读介质
CN112598447A (zh) * 2020-12-28 2021-04-02 加和(北京)信息科技有限公司 订单信息的处理方法及装置、电子设备及处理器
CN112598447B (zh) * 2020-12-28 2023-10-10 加和(北京)信息科技有限公司 订单信息的处理方法及装置、电子设备及处理器
US11930231B2 (en) 2021-01-13 2024-03-12 Jcdecaux Sa Digital display method and system, digital display device and digital display server
CN113282743A (zh) * 2021-06-03 2021-08-20 北京得间科技有限公司 信息展示方法、电子设备及存储介质

Also Published As

Publication number Publication date
CN105184614B (zh) 2018-08-24

Similar Documents

Publication Publication Date Title
CN105184614A (zh) 一种基于Storm平台的分布式数字标牌广告投放方法
CN110910165B (zh) 多渠道归因方法及相关设备
CN104252650A (zh) 一种自动化的数字标牌广告即时投放方法
CN104408132B (zh) 数据推送方法和***
CN106959965B (zh) 一种信息处理方法及服务器
CN105138501A (zh) 一种可配置的动态报表生成方法及***
CN106933836B (zh) 一种基于分表的数据存储方法和***
US20110225288A1 (en) Method and system for efficient storage and retrieval of analytics data
CN102043789A (zh) 一种更新数据表的方法和装置
CN105447723A (zh) 推广***与推广方法
CN102647455A (zh) 移动广告的处理方法、代理服务器及终端
CN108154376B (zh) 数据处理方法及装置
CN105117933A (zh) 一种广告物料数据调取方法和装置
CN101727638A (zh) 一种广告排期方法、装置及广告***
CN104298673A (zh) 一种对应用程序推送的效果进行统计的方法、装置及***
CN106202371A (zh) 媒体文件的处理方法、装置和广告分析方法
CN101369329A (zh) 一种在erp***中关联单据的方法及装置
CN106658158B (zh) 一种媒资数据的下发方法及下发装置
US20190007733A1 (en) Frame Certainty for Automatic Content Recognition
CN104462095A (zh) 一种查询语句公共部分的提取方法及装置
JP7512618B2 (ja) 広告配信装置、広告配信システム、広告配信方法、及び、広告配信プログラム
CN102111646B (zh) 一种视频点播中信息插播的方法和一种视频点播***
US20190385192A1 (en) Digital media generation
CN111506818B (zh) 一种航班数据处理方法及装置
CN101394606A (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
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20160603

Address after: 100048 Beijing city Haidian District Fuchengmen Road No. 33

Applicant after: Beijing Technology and Business University

Applicant after: Guangzhou screen information technology Co. Ltd.

Address before: 100048 Beijing city Haidian District Fuchengmen Road No. 33

Applicant before: Beijing Technology and Business University

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20210331

Address after: 510653 room f1001, 203 Kezhu Road, Science City, Guangzhou Economic and Technological Development Zone, Guangzhou City, Guangdong Province

Patentee after: GUANGZHOU WINALL ELECTRONIC TECHNOLOGY Co.,Ltd.

Address before: 100048, Fu Cheng Road, Beijing, Haidian District, No. 33

Patentee before: BEIJING TECHNOLOGY AND BUSINESS University

Patentee before: Guangzhou screen information technology Co.,Ltd.

TR01 Transfer of patent right
PP01 Preservation of patent right

Effective date of registration: 20220330

Granted publication date: 20180824

PP01 Preservation of patent right