优酷 张云锋 - 优酷广告投放引擎优化实践_部分2

浦俊慧

2017/12/18 发布于 技术 分类

各大视频媒体最大的收入来源就是广告收入,而广告投放引擎则是视频流量转化为广告收入的最重要角色之一。 对于广告技术团队来说,除了完成各种业务需求外,还要面对一系列充满挑战性的工作,主要包括: 持续优化系统架构,不断提升系统的可扩展性和稳定性; 不断地提升广告加载速度,减少用户看到广告之前的等待时间,以降低广告损耗比率。 在完成广告投放任务的前提下,尽可能提升用户体验,让用户少看到广告。 系统架构方面,我们基于职责链思想实现各模块之间高度解耦,增强了系统的可扩展性;性能优化方面,我们借助Ad-doctor系统对引擎中的关键模块进行分析诊断,并对各模块进行有针对性的优化,使引擎内部的RT降低了接近50%;我们借助Ad-doctor系统不断优化广告链路,显著降低了广告投放中的损耗比率。 本次的演讲中,将为大家分享我们在具体实践过程中的一些经验和教训。

文字内容
1. 引擎性能优化 - 索引结构优化 优化思路: 树形索引结构改为倒排索 A1,A2,A3 K21 K22 A1,A4,A5 优化效果: A2,A5 K23 u  索引创建耗时降低到之前 K11 A7 的1% K24 K12 K25 K1N A3,A8,A9 u  广告检索耗时降低到之前 的15%以内 A4,A5,A6 K26 u  索引数据占用内存大小降 低到之前1%以内 K27 A7,A8,A9 Key A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 K3 11 0 1 1 1 1 0 0 0 K3 11 0 0 1 1 0 1 1 0 K3 10 0 1 0 1 1 1 0 1
2. 引擎性能优化 – 阶段性优化实践效果 •  注:X轴:时间轴,y轴:ATM广告接口99%分位的RT(单位:ms)
3. 用户体验优化 问题描述: u  用户吐槽:广告太长、太多 u  客户要求:广告投放量有明确要求, 不允许少投。 优化目标: 在不减少广告绝对投放量的前提下, 让用户“少看”广告,提升用户体验。
4. 用户体验优化 – 广告时长和个数控制 简单粗暴的控制方法: 建立“视频时长(分钟) – 最大广告 时长(秒) – 最大广告个数”间的映射关 系,根据映射关系控制广告时长和个数。 映射原则: u  长视频长广告 u  短视频短广告 u  超短视频无广告 注:下图仅为示例,非真实线上规则 视频资源 中国 + 移动APP 中国大陆 + PC 。。。 视频时长 [1,5) [5,10) [10,30) [30,+∞) 视频时长 [1,3) [3,10) [10,20) [20,+∞) 视频时长 。。。 。。。 。。。 最大广告时长 16 32 48 64 最大广告个数 1 2 3 4 最大广告时长 16 32 48 64 最大广告个数 1 2 3 4 最大广告时长 。。。 。。。 。。。 最大广告个数 。。。 。。。 。。。
5. 用户体验优化 – 时长与个数控制效果 优化效果: •  杜绝了网友经常吐槽的“一 个才X分钟的短视频上竟然出 了Y秒钟的长的广告”的现象。 遗留问题: •  前一个贴位容量未充分使用, 便开始大量使用后个一贴位的 容量,导致出现多贴广告比例 过高。 示例:假设广告容量为1000CPM,预定曝光量 为600CPM时,各贴容量的使用量(蓝色)如下 第⼀前怕 90/150 第⼆前怕 78/130 第三前怕 72/120 第四前怕 60/100
6. 用户体验优化 – 广告贴位前移 •  方法: u  以小时为单位,按流量曲线分配 任务,小时内每分钟平均分配。 u  新任务分配给第一帖,上一分钟 未完成的任务分配给第二贴,…, 上(N-1)分钟未完成的任务分 配给第N贴。 u  N分钟前未完成的任务,留待剩 余的小时分配。 AdServer 2 找第一前帖 3 Task(t+2) Task(t+3) 1 4 AdSearcher 2 找第二前帖 3 Task(t+1) 2 找第三前帖 3 Task(t) Distributed Cache
7. 用户体验优化 – 广告贴位前移效果 优化效果: u  靠前的贴位使用率显 著增长 u  靠后的贴位使用率显 著降低 u  用户看到多贴广告的 比例显著降低 示例:假设广告容量为1000CPM,预定曝光量为 600CPM时,各贴容量的使用量(蓝色)如下 优化前各贴位使用率 第一贴 90/150 优化后各贴位使用率 第一贴 150/150 第二贴 78/130 第三贴 72/120 第四贴 60/100 第二贴 130/130 第三贴 20/ 120 第四贴 0/100
8. 用户体验优化 – 贴位前移方法遗留的问题 长视频容量未充分利用时,便开始使用短视频容量。 [30,+∞) 300/500 [10,30) 180/300 [5,10) 72/120 [1,5) 48/80
9. 用户体验优化 – 资源分级优化 目标: u  将广告尽可能向长视频和靠前的贴位倾斜 u  能根据广告投放任务的紧张程度自动扩大或缩小使用的资源范围 方法: u  视频资源分级(level) u  为广告设置资源使用范围(range) u  新增adRangeFilter处理模块,动态调节广告的资源使用范围。
10. 用户体验优化 – 视频资源分级 分级原则: u  根据用户的广告容忍度高低对视频资 源分级,容忍度越高,级别越小。 u  视频越长,级别越小 u  贴位越靠前, 级别越小 注:右图为10级分级表示例(仅用于原 理解释,非线上真实情况) 资源级别 1 2 3 4 5 6 7 8 9 10 视频时长 [30,+∞) [10,30) [5,10) [30,+∞) [30,+∞) [10,30) [30,+∞) [5,10) [10,30) [1,5) 广告位 第一前贴 第一前贴 第一前贴 第二前贴 第三前贴 第二前贴 第四前贴 第二前贴 第三前贴 第一前贴
11. 用户体验优化 –资源分级优化原理 adRangeFilter: 实时控制广 告的资源使用范围 adRangeFilter Start ResourceLevelTask:定时 同步资源级别 resLevel=getResLevel(vLen,adPos) adRange = getAdRange(aid) AdRangeTask:定时调整广 告range值 DCTask:定时分配新广告投 放任务 adRange >= resLevel N Y remove(aid) reduceDeliverCount(aid) End resourceLevel vLen adPos resLevel [30,+∞) P1 1 [10,30) P2 2 [5,10) P3 3 ... ... ... rangeMap aid adRange A1 1 A2 10 A3 8 ... ... dcMap aid dc A1 100 A2 250 A3 300 ... ... TimedTask ResourceLevelTask AdRangeTask DCTask
12. 用户体验优化 - 资源分级优化 rangeMap更新规则: u  若前N(指定常数)个连续周期的任 务未完成,则range++ u  若前N个连续周期的任务均完成,则 range— u  1 <= range <=MAX_RANGE(指定 常数) 示例:当N=1,MAX_RANGE=10时 㣗├t 0 㣗├猺t0+ T猻 㣗├猺t0+ 2T猻 dcMap A1: 350 A2:'>A2: 0 A3:'>A3: 0 A4: 900 dcMap A1:160 A2:'>A2: 0 A3:'>A3: 0 A4:906 dcMap A1:15 A2:'>A2:0 A3:'>A3:0 A4:897 rangeMap A1 : 3 A2 : 3 A3 : 1 A4 : 10 rangeMap A1 : 4 A2 : 2 A3 : 1 A4 : 10 rangeMap A1:5 A2:'>A2:1 A3:'>A3:1 A4:10
13. 资源分级优化 – 效果 优化效果: •  实现了广告向长视频和靠前的 贴位资源倾斜的目标 效果示例: •  如右图(仍旧以从1000CPM中 分出600CPM使用量为例) 资源级别 视频时长 1 [30,+∞) 2 [10,30) 3 [5,10) 4 [30,+∞) 5 [30,+∞) 6 [10,30) 7 [30,+∞) 8 [5,10) 9 [10,30) 10 [1,5) 广告位 ᒫӞ‫ڹ‬ᩂ" ᒫӞ‫ڹ‬ᩂ" ᒫӞ‫ڹ‬ᩂ" ᒫԫ‫ڹ‬ᩂ" ᒫӣ‫ڹ‬ᩂ" ᒫԫ‫ڹ‬ᩂ" ᒫࢥ‫ڹ‬ᩂ" ᒫԫ‫ڹ‬ᩂ" ᒫӣ‫ڹ‬ᩂ" ᒫӞ‫ڹ‬ᩂ" 容量使用率 趋势 1.00 +0.4 1.00 +0.4 1.00 +0.4 1.00 +0.4 1.00 +0.4 0.1 -0.5 0 -0.6 0 -0.6 0 -0.6 0 -0.6
14. 资源使用优化 – 优化效果 广告随着投放任务紧张程度周期性 自动增大或缩小投放的资源范围。 A3 A2 A1
15. 经验与教训 u  严格遵循用数据说话的原则,先埋点和统计,再根据统计结果做优化, 最后对优化结果做数据统计对比,明确后续优化方向,避免仅凭个人猜 测来做优化决策。 u  灵活运用奥卡姆剃刀原则,总是尽可能使用简单有效的方案,杜绝过渡 设计或非必要的外部依赖,避免为将来“埋坑”。 u  以修高速公路的思路优化广告链路,当主干链路过于拥堵时,一方面考 虑修条新路来分流(广告缓存推荐机制),另一方面对已有链路进行拓 宽和提速(引擎内部性能优化),最后,还可以鼓励用户调整出行规律 (广告异步加载机制)。