在中国在线视频行业,相比PC端和移动端,电视屏具备一定的权威性,用户对电视屏幕上的广告持更高的信任和认同,电视屏幕具备极高的广告变现价值。因此一个高性能、高可用的OTT广告系统将对企业产生巨大的商业价值。本文内容为作者所在公司自主研发以及运营的“微鲸广告平台”的研究成果。 引言 当前正处在家庭互联网浪潮即将到来的时代,智能电视作为家庭互联网及客厅经济的中心,以其大屏震撼视听效果牢牢地抓住了用户的眼球。用户收看行为改变之下,一场会让整个OTT广告发生实质性颠覆的变革正在不断酝酿。从人口覆盖角度看,根据《2016年中国互联网电视行业研究报告》显示,2016年中国互联网电视保有量将突破1.3亿,57.7%的OTT用户都是三口之家,这意味着一次广告曝光将触动更多受众。用户主要集中在华东和华南,而且用户群体趋于年轻化,66%为中青年人群,这些用户教育程度高,消费能力强,基本属于社会上的中高端消费人群。
图2-1 用户模型、内容模型
图2-2 广告系统大数据架构图 广告个性化投放对于广告主来说非常有吸引力,但对系统的高性能提出了更高的要求。对于传统系统,每个用户接受到的内容是一致的,对于非实时性要求的内容,可采用CDN技术来缓解后端服务压力。对OTT个性化广告系统来说,在满足内容实时性、差异性要求的同时,使系统具备高性能、高可用是一个巨大的挑战。 OTT广告系统结构 广告系统架构图
图3-1 广告系统架构图 广告系统部署图
图3-2 广告系统部署图 大系统小做 关键技术说明 多域名下发
图4-1 多域名下发示意图 同时,为了防止域名劫持和CDN故障带来的服务不可用问题,每个域名又配置了多个CDN集群和服务集群,减小域名劫持和CDN故障可能带来的用户影响面。 集装箱模型:广告服务高效运营
如图4-2所示,系统检索端路由层根据一致性HASH算法对用户进行划分,不同的用户请求被路由到不同的SET单元。当SET-B中任何一个环节出现问题导致SET故障时,只会对这部分用户产生影响,其他SET中用户可正常请求广告,有效防止故障扩散。
图4-2 SET单元失效故障转移示意图
集装箱模型的每一个单元SET具备全部业务服务能力,当SET数量不足以支撑业务压力时,可完全克隆一个SET单元分担业务压力,同时通过一致性HASH算法进行数据漂移,实现动态扩容,过程如图4-3所示。扩容以后,整个系统的业务能力提高了50%,实现节点和业务能力的线性增长。
图4-3 SET单元动态扩容示意图
在集装箱模式下,每个SET单元具有一定的独立性,系统具备灰度发布和AB测试的能力。当新功能需要灰度发布和进行AB测试时,可对部分SET单元进行升级,检测系统指标和用户反馈,系统功能升级更具可控性。 柔性可用:服务优雅降级
广告系统服务等级示意图 如图4-4所示,系统对包含的服务和操作都做了分级,当监测到系统压力超出阈值时,会逐级对服务进行降级,即抛弃部分次要功能,提供有损服务。服务等级越高,优先开始降级。服务的分级管理可使服务降级实现自动化,更加及时的保护核心服务。
当系统无法承受异常压力时,在防护层会随机拒绝服务,即检索端不提供广告,此时电视机不播放广告或者只播放本地广告。这样可以让一部分用户正常请求到广告数据,保证广告的基本收入。同时,对于被拒绝服务的用户来说,可以进行正常观影,不影响用户体验。 两级内存缓存
图4-5 两级内存缓存示意图 对于非实时、写频繁的数据,系统把这部分数据存储在内存数据库REDIS节点中,再通过持久化模块离线写入数据库。 数据异构冗余和调用异步化
如图4-6所示,为降低系统耦合性和服务调用成本,系统采用数据异构的方案,把终端系统、会员系统、内容系统和特征系统等系统的数据异构到广告检索系统中,减少支撑系统故障对检索功能的影响,提升广告系统整体性能和可用性。 图4-6 数据异构冗余示意图
图4-7 异步调用示意图 为进一步提升系统性能,在广告检索端实现调用异步化。如图4-7所示,当检索端接收到广告计数请求时,不实时更新广告索引树,而是向数据高速通道发送计数消息,快速结束计数生命周期,减短请求在检索层流转时间。当消息中间件收到广告计数消息时,通知计费系统处理。计费系统判断广告到达计费阈值时,再通过消息中间件、数据高速通道通知检索层更新广告索引树,可最大程度减少检索层的写操作锁,加快广告检索速度。 双层布尔检索:极速广告检索服务
在OTT精准广告投放中,复杂的定向条件对检索性能提出了很高的要求。广告检索的上下文关键词和用户标签比较丰富,广告查询词会较长长,利用基于倒排索引的搜索引擎技术,从性能和检索结果看,都不能达到广告检索的要求。
图4-8 布尔检索倒排索引示意图 因此,广告a1,a2可以表示为:
布尔检索存在需要匹配很多conjunction的问题,这对性能有较大的影响。为解决该问题,可采用“先剪枝再遍历”的方法,尽量减少需要匹配的conjunction,即双层布尔检索。 1.剪枝 广告请求定向条件数为2(size=2),所以size |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|