OTT广告系统设计与实现

                                            OTT广告系统设计与实现

来源:彗星计划


摘要


在中国在线视频行业,相比PC端和移动端,电视屏具备一定的权威性,用户对电视屏幕上的广告持更高的信任和认同,电视屏幕具备极高的广告变现价值。因此一个高性能、高可用的OTT广告系统将对企业产生巨大的商业价值。本文内容为作者所在公司自主研发以及运营的“微鲸广告平台”的研究成果。


引言


当前正处在家庭互联网浪潮即将到来的时代,智能电视作为家庭互联网及客厅经济的中心,以其大屏震撼视听效果牢牢地抓住了用户的眼球。用户收看行为改变之下,一场会让整个OTT广告发生实质性颠覆的变革正在不断酝酿。从人口覆盖角度看,根据《2016年中国互联网电视行业研究报告》显示,2016年中国互联网电视保有量将突破1.3亿,57.7%的OTT用户都是三口之家,这意味着一次广告曝光将触动更多受众。用户主要集中在华东和华南,而且用户群体趋于年轻化,66%为中青年人群,这些用户教育程度高,消费能力强,基本属于社会上的中高端消费人群。

互联网电视改变了传统电视单一的线性排播,用户更愿意主动去选择观看自己喜爱的影片,互联网电视可以最大程度的满足人们自由观影的需求。同时,互联网电视提供的舒适的后仰式观影体验和较短的广告时间,使得广告投放效果最有效。《2016中国互联网电视生态链发展白皮书》显示,消费者对电视广告信赖度达到54%,是所有传播渠道首位。OTT广告通过智能电视这块家中最大的交互屏幕,以优质的视频或图文形式呈现,提升用户的感官体验的同时增强了用户对产品的记忆度,广告投放价值被放大了数倍。

但目前来看,OTT TV这个广告平台并没有被广告主真正接受,互联网电视广告市场还属于前期探索阶段。一个高性能、高可用的OTT广告系统将对探索和推动OTT广告市场产生重要影响。

“家庭围绕”战略,广告定制化

未来OTT会面向“家庭围绕”战略来展开,依托大数据分析,来满足每一个家庭的需求,让用户享受定制化的体验。如图2-1和2-2所示,OTT广告基于用户模型和内容模型,结合大数据技术架构,可针对用户进行精准广告投放,做到“广告即信息”。



图2-1 用户模型、内容模型



图2-2 广告系统大数据架构图


广告个性化投放对于广告主来说非常有吸引力,但对系统的高性能提出了更高的要求。对于传统系统,每个用户接受到的内容是一致的,对于非实时性要求的内容,可采用CDN技术来缓解后端服务压力。对OTT个性化广告系统来说,在满足内容实时性、差异性要求的同时,使系统具备高性能、高可用是一个巨大的挑战。

本文后续内容将提出具备个性化广告投放能力的OTT广告系统的设计方案,并对技术实现细节做了详细阐述。


OTT广告系统结构


广告系统架构图

广告系统架构如图3-1所示,主要由路由模块、检索模块、排序模块、DMP系统、计费系统、投放系统、长连接系统、转码系统、分发系统、监控模块、数据高速通道、终端系统等组成。下面几个小节将详细介绍重点模块的功能和使用到的关键技术。



图3-1 广告系统架构图


广告系统部署图



图3-2 广告系统部署图


大系统小做

广告系统在设计时坚持“大系统小做”的理念,将功能复杂的广告系统,化大为小,减少模块耦合,降低相关联性,用独立小系统或模块相互协作来实现整体功能。从3.1小节我们可以看出,广告系统整体架构复杂,但各个小系统或模块独立运行和部署,使得广告系统故障更易排查,维护成本更低。广告系统各个子系统采用小团队敏捷方式运作,能快速适应需求变化,开发效率更高,为复杂广告系统提供了质量保证。


关键技术说明


多域名下发

为保证广告系统稳定、高可用,系统采用了多域名下发策略进行请求分流,同时降低域名劫持和CDN故障对系统性能的影响。

如图4-1所示,电视机在开机时会向终端系统请求域名策略,终端系统识别用户后会下发域名A和域名B,电视机会依次检测域名可用性,在用户侧达到请求分流目的。采用多域名还可有效防止域名封杀、域名屏蔽等问题,提升系统可用性。



图4-1 多域名下发示意图


同时,为了防止域名劫持和CDN故障带来的服务不可用问题,每个域名又配置了多个CDN集群和服务集群,减小域名劫持和CDN故障可能带来的用户影响面。


集装箱模型:广告服务高效运营

在系统设计过程中,集装箱模式是根据业务特征进行规模化扩容或部署而建立的基础资源模型。广告系统检索端采用集装箱模型进行设计,主要用于解决故障扩散、单点失效问题和应对用户及业务增加带来的服务压力,通过水平方向上的模块分组、数据分块实现请求分流,提升系统性能。


  • 防止故障扩散、损失最小化


如图4-2所示,系统检索端路由层根据一致性HASH算法对用户进行划分,不同的用户请求被路由到不同的SET单元。当SET-B中任何一个环节出现问题导致SET故障时,只会对这部分用户产生影响,其他SET中用户可正常请求广告,有效防止故障扩散。

同时,当监控到某一个SET发生故障时,系统自动通过一致性HASH算法进行数据漂移,当该SET单元的数据全部漂移到其他SET单元后,在路由层摘除该SET,用户请求重新路由,做到损失最小化。



图4-2 SET单元失效故障转移示意图


  • 动态扩容、缩容


集装箱模型的每一个单元SET具备全部业务服务能力,当SET数量不足以支撑业务压力时,可完全克隆一个SET单元分担业务压力,同时通过一致性HASH算法进行数据漂移,实现动态扩容,过程如图4-3所示。扩容以后,整个系统的业务能力提高了50%,实现节点和业务能力的线性增长。

业务压力下降时,可通过下线部分SET单元进行动态缩容,节约运营成本。



图4-3 SET单元动态扩容示意图


  • 灰度发布和AB测试


在集装箱模式下,每个SET单元具有一定的独立性,系统具备灰度发布和AB测试的能力。当新功能需要灰度发布和进行AB测试时,可对部分SET单元进行升级,检测系统指标和用户反馈,系统功能升级更具可控性。


柔性可用:服务优雅降级

在系统压力剧增的情况下,为防止系统雪崩和保证核心服务的正常运行,系统会根据当前流量和业务形态对服务进行优雅降级。服务优雅降级主要采用了如下2种方式。


  • 服务分级管理




广告系统服务等级示意图


如图4-4所示,系统对包含的服务和操作都做了分级,当监测到系统压力超出阈值时,会逐级对服务进行降级,即抛弃部分次要功能,提供有损服务。服务等级越高,优先开始降级。服务的分级管理可使服务降级实现自动化,更加及时的保护核心服务。


  • 接口随机拒绝服务


当系统无法承受异常压力时,在防护层会随机拒绝服务,即检索端不提供广告,此时电视机不播放广告或者只播放本地广告。这样可以让一部分用户正常请求到广告数据,保证广告的基本收入。同时,对于被拒绝服务的用户来说,可以进行正常观影,不影响用户体验。


两级内存缓存

为进一步提升广告检索端性能,系统采用了两级内存缓存数据,分别为实例内存高速缓存和REDIS高速缓存,如图4-5所示。广告索引树数据存储在检索节点的实例内存中,相比其他存储方式,基于内存的检索速度可到达毫秒级别。



图4-5 两级内存缓存示意图


对于非实时、写频繁的数据,系统把这部分数据存储在内存数据库REDIS节点中,再通过持久化模块离线写入数据库。


数据异构冗余和调用异步化


  • 数据异构冗余


如图4-6所示,为降低系统耦合性和服务调用成本,系统采用数据异构的方案,把终端系统、会员系统、内容系统和特征系统等系统的数据异构到广告检索系统中,减少支撑系统故障对检索功能的影响,提升广告系统整体性能和可用性。



图4-6 数据异构冗余示意图


  • 调用异步化




图4-7 异步调用示意图


为进一步提升系统性能,在广告检索端实现调用异步化。如图4-7所示,当检索端接收到广告计数请求时,不实时更新广告索引树,而是向数据高速通道发送计数消息,快速结束计数生命周期,减短请求在检索层流转时间。当消息中间件收到广告计数消息时,通知计费系统处理。计费系统判断广告到达计费阈值时,再通过消息中间件、数据高速通道通知检索层更新广告索引树,可最大程度减少检索层的写操作锁,加快广告检索速度。


双层布尔检索:极速广告检索服务


  • 布尔检索


在OTT精准广告投放中,复杂的定向条件对检索性能提出了很高的要求。广告检索的上下文关键词和用户标签比较丰富,广告查询词会较长长,利用基于倒排索引的搜索引擎技术,从性能和检索结果看,都不能达到广告检索的要求。

有复杂定向条件的广告可以看成是一个布尔表达式,用析取范式(DNF)表示如下:


a1 = (age∈{20,30}∩geo∈{广东}∩gender∈{男}) ∪ (age∈{40,50}∩geo∈{广东}∩gender∈{男})

a2 = (age∈{25,45}∩geo∈{广东})

引入另外一个符号j(conjunction)表示析取范式中的各个交集:

j1= (age∈{20,30}∩geo∈{广东}∩gender∈{男})

j2= (age∈{40,50}∩geo∈{广东}∩gender∈{男})

j3= (age∈{25,45}∩geo∈{广东})



图4-8 布尔检索倒排索引示意图


因此,广告a1,a2可以表示为:

a1 = j1 ∪ j2

a2 = j3

建立的倒排索引如图4-8所示。


  • 双层布尔检索


布尔检索存在需要匹配很多conjunction的问题,这对性能有较大的影响。为解决该问题,可采用“先剪枝再遍历”的方法,尽量减少需要匹配的conjunction,即双层布尔检索。

引入剪枝变量size,表示某个conjunction需要同时满足多个条件,即定向条件包含几个子条件。引入size变量后,倒排索引如图4-9所示。

广告请求:30岁,广东,双层布尔检索过程如下:


1.    剪枝


广告请求定向条件数为2(size=2),所以size>=3的分支不可能成为该广告请求的结果,所以只需要去匹配size<=2的分支,达到剪枝的效果。


2.    遍历


在上一步剪枝之后,只剩下size=2的分支,再采用遍历的方式匹配广告。

30岁,匹配25~45岁,j3命中+1;广东,匹配广东,j3命中+1,因sizeof(j3)>=size,满足要求,再根据倒排索引,检索出广告2。



图4-9 双层布尔检索倒排索引示意图


由上面的过程可知,双层布尔检索使得匹配次数下降,把遍历全部congjunction(j)转化为成只匹配size范围内的conjunction(j),加快了广告检索速度,提升了整个广告系统的性能。


极速广告播放体验:动态CDN调度 + 码率自适应 + 智能预缓存

极速的广告播放体验对用户的容忍度有着至关重要的影响,系统采用动态CDN调度、码率自适应和智能预缓存技术,使OTT用户享受极速广告播放体验。


  • 动态CDN调度


CDN对于OTT行业来说是必不可少的一环,在线视频行业为加速广告素材的播放,将广告素材分发到CDN节点上。“任何可能出问题的地方,就一定会出问题”,这对于CDN来说也不例外。为了防止CDN节点故障导致的广告播放失败,系统实现了动态CDN调度,分服务端调度和客户端调度,如图4-10所示。



图4-10 动态CDN调度示意图


广告素材在分发时,会分发到多家CDN,并对多家CDN设置优先级。当其中一家CDN发生故障或其他突发情况时,可在服务端通过“CDN切换模块”手动切换CDN,并通过长连接系统快速下发CDN切换消息。电视机在收到CDN切换消息时,会对CDN源进行切换。

电视机在播放广告时也会对CDN速度进行监测,当一个CDN的速度不能满足要求时,会按照CDN优先级自动切换到其他CDN,保证广告播放极速无卡顿。


  • 码率自适应


《中国互联网上网测速报告》显示,中国各地区、各运营商上网带宽差别较大,每天平均上网带宽、每小时平均上网带宽也不尽相同,如图4-11所示。

在服务端会转码生成不同码率的广告素材,并分发到不同CDN节点。在客户端会实时监测用户网络带宽,根据用户网络带宽播放不同清晰度的广告素材,保证广告播放极速无卡顿。



图4-11 24小时平均上网带宽走势


  • 智能预缓存


国内互联网网络带宽千差万别,特别是西北地区和晚上高峰期,用户网络带宽一般都较小,这会带来一个矛盾的问题:广告素材清晰度高,会造成卡顿;清晰度低,广告体验差。

为适应用户的极端网络情况,改善广告播放体验,系统对广告素材做了智能预缓存,如图4-12所示。



图4-12 广告素材智能预缓存示意图


对于开机广告,电视机会在网络状况良好时预缓存开机4K广告,让开机广告完全本地化。对于前贴片、暂停等广告,收益评估系统会评估“最有可能”推送给用户的广告素材,并通过长连接系统推送广告的元信息,通知电视机进行本地缓存,保证广告素材的无卡顿播放和用户体验,实现广告收入损失最小化。


长连接体系:广告信息的高速公路


广告系统采用长连接体系作为信息下发的高速公路,通过长连接通道下发开机、前贴片等广告策略,有效地解决了HTTP轮询带来的资源消耗和消息延迟。


  • 广播模式


在广播模式下,长连接系统会一次性对所有处于在线状态的电视机进行消息下发,做到消息的及时下达,最大程度降低消息延时。对于离线状态的电视机,长连接通过上下线模块监测,一旦电视机在消息有效期内切换到在线状态,会立即下发消息。


  • 渐进式模式


很多情况下,电视机收到后端消息后,需要向后端请求更多数据。同一时刻,全部在线状态的电视机接收消息并向后端请求数据时,会出现请求的“悬崖式峰值”,如图4-13所示。



图4-13 悬崖式峰值示意图


系统出现悬崖式峰值存在两个问题:

1.    资源的浪费


为应对峰值时的服务压力,需要部署大量节点来支撑峰值的并发量,但在其他时间,服务节点基本属于闲置状态,造成机器资源的浪费。


2.    CDN费用的增加


OTT开机广告素材需要预下载到电视机,长连接下发开机广告更新消息,此时全部电视机都向CDN节点请求开机广告素材,会导致CDN流量峰值,极大地增加基于峰值计费的CDN流量费用。



图4-14 长连接渐进式模式示意图


基于以上两点,我们采用渐进式模式对非实时性要求的消息进行下发,如图4-14所示。

在渐进式模式下,处于在线状态的电视机将分批次收到消息和向后端请求数据,在时间维度上分摊请求压力,后端请求趋势如图2-15所示。从趋势图上可以看到,在渐进式模式下,请求更加平稳,达到保护后端服务和降低运营费用的目的。



图4-15 渐进式模式下请求趋势图


安全防护

传统HTTP通信方式在通信链路上存在很多不安全环节,影响广告系统的稳定和性能。为解决该问题,采用了HTTPS双向认证来保证通信链路的安全,防止黑客攻击影响。同时在防护层加入攻击监测模块,实时监测异常流量,如图4-16所示。



图4-16 安全防护示意图


物理容灾

系统为了实现物理容灾,保证服务高可用,在异地多IDC部署容灾、传输通道容灾、模块热备容灾三个方面做了优化。


  • 异地多IDC部署容灾


为了保证核心业务的多活,系统采用了异地多IDC部署方案。如图4-17所示,广告索引和广告检索系统分别在北京、杭州和深圳三个地区的IDC部署,防止不可抗拒的因素导致整个广告系统的宕机。



图4-17 异地多IDC部署示意图


  • 传输通道容灾


为保证数据通道高效、高可用,系统采用传输通道容灾方案,如图4-18所示。广告投放素材与转码系统之间默认采用专线传输,当专线异常时,可切换到公网线路传输。广告投放元数据与各地索引中心之间默认采用消息队列传输,接口调用方式作为备用传输通道。广告索引与各地广告检索中心之间默认也采用消息队列传输,消息队列异常时,采用P2P方式传输数据。



图4-18 传输通道容灾示意图


  • 模块热备容灾


为进一步提升系统可用性,对每个SET单元里的模块进行了热备容灾,防止单点故障对SET单元稳定性的影响。如图4-19所示,在SET单元中,检索模块、分区模块、消息中间件模块、REDIS存储都做了热备容灾处理,使得每个SET单元的稳定性得到提升。



图4-19 模块热备容灾示意图


总结

本文分析了OTT广告具备的巨大商业价值,陈述了OTT广告生态圈尚不成熟的现状。据此提出了OTT高性能广告系统的设计方案,并从大系统小做、多域名下发、集装箱模型、物理容灾、服务优雅降级、长连接体系、双层布尔检索、两级内存缓存、数据异构调用异步、极速广告播放体验、安全防护几个方面详细阐述了实现细节。进一步将深入研究“家庭围绕”战略的精准广告投放和广告投放预测领域,探索OTT广告领域的新高度。


版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。


-END-


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值