《微博广告分层实验平台(Faraday)架构实践》要点:
本文介绍了微博广告分层实验平台(Faraday)架构实践,希望对您有用。如果有疑问,可以联系我们。
移动互联网广告基于大数据,实现广告的精准人群定向投放和效果评估,并借助于不可胜数的广告策略,控制着广告的实时投放,让数据驱动型的移动互联网广告沿着站方、用户、广告主三者共赢的目标不断前进.
大数据驱动使得效果指标的量化评估成为了可能.为了实现好的广告投放效率,线上运行的每一个广告策略需要相应的实验和效果分析,通过量化分析来评估该广告策略效果的好坏.策略可能需要不断地尝试,并进行合理地流量均匀分流,经过多轮线上 A/B test 实验迭代,才能形成最终的决策值.另外,广告平台上许许多多的策略,有的相互独立,有的相互影响,如何高效地进行大规模的并行策略实验,是个不小的挑战.
在广告为核心业务的移动互联网公司,从 Google,Facebook,到腾讯,阿里,百度,都有着一套支持广告策略快速迭代和支持大规模并行实验的广告实验平台.
近期微博广告正式推出了微博广告法拉第(Faraday)全流量分层实验平台.该实验平台支持大规模广告策略并发实验,提供了多种流量均匀分流模式,全面的广告指标跟踪评估,实验效果实时反馈等.
该实验平台借鉴了 google 的论文 [备注一] 关于分层实验的设计思想,并结合微博广告平台的应用场景进行了大量的简化.
该分层模型的主要思想为:
该分层模式简单明了,可以满足大部分的应用场景.另外,还有明显的好处:
流量的均匀划分是实验具有可对比性的前提.根据策略实验的需求和应用场景,系统提供以下不同均匀强度的流量划分类型:
对于涉及用户体验层面的实验,比如广告渲染的样式类型等,还会存在这样的需求,进行实验时,需要指定若干个用户命中指定的实验.这时,实验平台辅以白名单的方式,为流量划分类型提供补充.
具体进行流量划分时,为了实现实验层之间流量划分的正交性,会将流量标识信息和实验层标识一起进行实验流量 bucket 划分, 实验层标识 layer_id 称为离散因子.如基于用户标识的流量划分:
理论上,通过以上几种流量划分类型,可以实现对应均匀强度的流量划分;但是,总会出现一些情况,发现最终划分的流量可能是不均匀的,从而影响到实验的可对比性.
对此,实验平台提供了一种流量划分的均匀性验证工具.基本思路为: 在广告系统中,用户是通过多维的画像向量(a,b,c,…,n)来进行刻画的,如果流量划分是均匀的,意味着用户的每一个画像向量分量在该流量划分条件下是均匀,更进一步,多个画像向量分量的组合在该流量划分条件下也是均匀的.通过进行用户画像向量单个分量和若干个画像向量分量的组合的均匀性验证,即可来反映该流量的划分的均匀性.
实验平台整体架构图如下:
实验平台架构主要包括几个重要部分: 法拉第工作台,实验配置管理与决策中心,线上系统策略分发和控制,实验数据实时流和离线批处理,实验效果 dashboard 展示.下面对其中的关键特性予以介绍.
法拉第工作台供实验人员进行操作的入口.界面功能包括广告策略录入,实验创建与控制,扩量和全量发布,实验效果跟踪,实验平台前端界面大大降低了实验操作人员的门槛.
所有的实验策略配置信息都会持久化落地到配置中心(mysql 等),包括当前正在进行的实验的策略配置情况,也包括已经完成的实验配置情况.同时,实验策略配置会保存当前实验上下文的全局快照信息,可以进行指定版本的实验上下文的回滚.由于线上系统的策略配置决策信息完全依赖于实验平台和实验策略配置中心,实验策略配置中心本身的安全性,数据完整性,可用性,就变得极为重要.便于进行实验策略的回滚就是确保的系统稳定性和策略决策正确性的关键措施之一.
实验的策略配置信息通过策略分发机制来应用到线上生产环境. 为了最大程度地减少实验平台对生产环境的侵入性,这里采用了策略全局统一分发的方式来完成.生产环境只用在流量接入层请求实验平台,确定实验策略参数的取值,然后将确定的策略参数信息作为广告请求体的一部分,携带在广告请求参数中,一同下发给上游的各个服务器,每个服务器模块根据自己的需求情况进行获取对应的策略参数信息,进行广告精准投放计算.
实验环境供生产环境请求调用的模块称为法拉第实验 CORE.具体地,在广告请求的接入层 Router,由 Router 去请求法拉第 CORE.对于线上环境来说,策略实验的细节是透明的.换句话说,线上生产环境实际上是不关心当前是否正在进行着实验,以及正在进行着哪些实验;线上生产环境只关心从实验策略控制中心获取到所有托管于实验平台的策略参数的决策值.
法拉第实验 CORE 包括两种实现形式.一种是原生动态库.so 形式,这种嵌入到宿主服务内部,可以节约 I/O 通信消耗;另一种是 HTTP API 形式,这种提供了跨语言方式的支持.
在法拉第实验 CORE 内部,需要对本次请求标识信息和全局的实时实验配置信息,依次对每个托管于实验平台的策略参数进行决策.对于正在进行实验的策略参数,根据实验层中每层选用的实验分流类型和分流配比,确定实验的命中情况,从而确定策略参数取值;对于当前没有进行实验的策略参数,则取其默认策略参数值. 最终,全部的参数都确定其取值,形成 k-v 对,连同当前流量的实验命中信息情况,反馈给生产环境 router 模块.
请求的实验信息会以 tag 的形式记录在生产环境的请求日志中,形如: layer1_layer2layer3…_layerN. 请求日志会落地到广告数据总线系统,再由广告实时流系统进行消费、数据清洗、实验效果指标计算等工作.由于广告系统是多业务指标系统,包括售卖率,ECPM, CTR, ACPE,负反馈率、财务消耗计算等.广告实时流系统还需要日志的关联工作,比如关联广告互动日志,广告负反馈日志.实时流的计算的结果,会落地到 druid 系统,方便实验效果数据的快速检索和二度加工.实验效果实时指标数据计算延迟控制在一定的范围内(5 分钟).
由于实时日志可能会存在日志延迟、重复、丢失等情况,实时流系统的计算指标的准确性会难以保证.因此,对于非实时的指标数据,会启动离线批处理计算进行实验指标的校正,特别是对于非当天的历史实验指标数据,离线批处理会进行重新计算,形成最终准确的实验指标数据体系.
实验效果 dashboard 展示采用了量化分析的方式,精确衡量实验间的效果对比情况.
实验间的对比,提供两种对比维度:一个是横向对比,这个进行同一个实验层中所有对比实验和基准实验间的各个指标的对比,以发现同时间区间各个实验的策略的对生产环境的影响;一个是纵向对比,是指定的对比实验和基准实验在时间纵向维度的效果对比,以发现该对比实验是否具体持续的效果提升 / 下降效果.实验效果跟踪横向对比图表和纵向对比图表展示效果如下:
有时,为了更加详尽地洞察实验效果指标的更多细节,需要对实验指标按某一个维度进行分解,达到更小观测粒度.比如,微博用户在不同的设备平台(PC,安卓平台,IOS 平台)不一样的操作习惯和兴趣习惯,可以分平台粒度查看该对比实验在各个设备平台的实验指标变化情况;微博不同场景信息(关系信息流,兴趣信息流,热门搜索流等)的属性存在天然差别,部分策略在分场景流去分析时可能回更有意义;另外,也提供了分广告竞价类型的实验效果跟踪分析.
最后需要提的是,实验平台在效果跟踪决策方面是有一定的局限性的.实验平台可以进行实验效果的快速跟踪,但是却很难进行实验效果好坏的决策.比如:如果对比实验效果指标值全部提高或下降了,可以简单认为对比实验的策略调整起正向作用或者反向作用;如果对比实验的实验效果指标值部分提高了,部分下降了,就不太好认定了.还有,实验效果的短期效应和长期效应也可能是不一致,这将大大增加了实验效果好坏的决策难度.
因此,实验平台是可以快速提升广告业务策略迭代效率的工具,但是要想进行实验好坏评定的决策,还需要很长的路要走.
为了弥补这个不足,可以成立一个实验平台评审委员会.通过非技术手段进行线下决策,包括实验的效果好坏评定,是否进行实验的发布,对生产环境的长期效应等一些列的决策.
李铁牛,目前就职于新浪微博广告平台部,粉丝通广告平台技术负责人.2011 年毕业于中国科学院大学,2012 年加入新浪微博,参与并主导了粉丝通,品牌速递,应用家,超级粉丝通等多个核心广告产品迭代开发和投放平台的架构设计工作,完成粉丝通广告架构由产品线型向平台型架构的转型, 主导开发了 Faraday 分层实验平台. 目前,本人从事关于高并发、高性能、高可用的广告平台架构设计,以及广告投放策略研究和团队管理等工作.
文章来自微信公众号:细说云计算
转载请注明本页网址:
http://www.vephp.com/jiaocheng/2742.html