写点什么

微博广告分层实验平台 (Faraday) 架构实践

  • 2017-05-25
  • 本文字数:4024 字

    阅读完需:约 13 分钟

移动互联网广告基于大数据,实现广告的精准人群定向投放和效果评估,并借助于不可胜数的广告策略,控制着广告的实时投放,让数据驱动型的移动互联网广告沿着站方、用户、广告主三者共赢的目标不断前进。

大数据驱动使得效果指标的量化评估成为了可能。为了实现好的广告投放效率,线上运行的每一个广告策略需要相应的实验和效果分析,通过量化分析来评估该广告策略效果的好坏。策略可能需要不断地尝试,并进行合理地流量均匀分流,经过多轮线上 A/B test 实验迭代,才能形成最终的决策值。另外,广告平台上许许多多的策略,有的相互独立,有的相互影响,如何高效地进行大规模的并行策略实验,是个不小的挑战。

在广告为核心业务的移动互联网公司,从 Google,Facebook,到腾讯,阿里,百度,都有着一套支持广告策略快速迭代和支持大规模并行实验的广告实验平台。

近期微博广告正式推出了微博广告法拉第(Faraday)全流量分层实验平台。该实验平台支持大规模广告策略并发实验,提供了多种流量均匀分流模式,全面的广告指标跟踪评估,实验效果实时反馈等。

实验分层模型

该实验平台借鉴了 google 的论文 [备注一] 关于分层实验的设计思想,并结合微博广告平台的应用场景进行了大量的简化。如下图所示:

该分层模型的主要思想为:

  • 相关联的策略参数位于同一实验层;
  • 相互独立的策略参数分属于不同的实验层;
  • 一个实验参数只能在一个实验层中出现;
  • 不同实验层间进行独立的流量划分和独立的实验,互不影响。

该分层模式简单明了,可以满足大部分的应用场景。另外,还有明显的好处:

  1. 该分层模型是面向策略参数的实验分层,不受线上广告系统模块划分的影响,达到最大化可独立进行实验的个数;
  2. 每一实验层享有 100% 流量,可以避免流量切分过细,保证实验间的可对比性、客观性;
  3. 不同实验层之间流量正交,可以避免不同试验间的流量依赖和流量不均匀情况的出现。为了更好地评估实验的效果,每一实验层还引入了基准实验。该基准实验会采用该实验层的默认策略取值,流量配比会设定在一个合适的水平。

(点击放大图像)

流量划分类型

流量的均匀划分是实验具有可对比性的前提。根据策略实验的需求和应用场景,系统提供以下不同均匀强度的流量划分类型:

  • 流量完全随机 这是最简单的分流方式;
  • 用户标识 id 哈希 该流量划分会使同一个用户会一直命中同一实验,从而保证了用户体验的一致性;而且也满足对同一用户具有累积效应的策略的实验需求;
  • (用户标识 id+ 日期)哈希 这是一种更为严格的保证流量均匀性的分流方式,可以保证流量划分在跨时间维度上更为均匀,但是会牺牲用户请求跨时间区间的一致性;
  • 用户 id 尾号划分 这是一种很常用、很简单的分流方式,还保证了用户体验的一致性,但是可能会由于尾号分布的不均匀性而造成流量分布的不够均匀,影响实验的可对比性。一种折衷方案是,根据用户标识 id 中间若干位来进行流量的划分。

对于涉及用户体验层面的实验,比如广告渲染的样式类型等,还会存在这样的需求,进行实验时,需要指定若干个用户命中指定的实验。这时,实验平台辅以白名单的方式,为流量划分类型提供补充。

具体进行流量划分时,为了实现实验层之间流量划分的正交性,会将流量标识信息和实验层标识一起进行实验流量 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_layer2_layer3_…_layerN。 请求日志会落地到广告数据总线系统,再由广告实时流系统进行消费、数据清洗、实验效果指标计算等工作。由于广告系统是多业务指标系统,包括售卖率,ECPM, CTR, ACPE,负反馈率、财务消耗计算等。广告实时流系统还需要日志的关联工作,比如关联广告互动日志,广告负反馈日志。实时流的计算的结果,会落地到druid 系统,方便实验效果数据的快速检索和二度加工。实验效果实时指标数据计算延迟控制在一定的范围内(5 分钟)。

(点击放大图像)

由于实时日志可能会存在日志延迟、重复、丢失等情况,实时流系统的计算指标的准确性会难以保证。因此,对于非实时的指标数据,会启动离线批处理计算进行实验指标的校正,特别是对于非当天的历史实验指标数据,离线批处理会进行重新计算,形成最终准确的实验指标数据体系。

实验效果dashboard 展示

实验效果dashboard 展示采用了量化分析的方式,精确衡量实验间的效果对比情况。

实验间的对比,提供两种对比维度:一个是横向对比,这个进行同一个实验层中所有对比实验和基准实验间的各个指标的对比,以发现同时间区间各个实验的策略的对生产环境的影响;一个是纵向对比,是指定的对比实验和基准实验在时间纵向维度的效果对比,以发现该对比实验是否具体持续的效果提升/ 下降效果。实验效果跟踪横向对比图表和纵向对比图表展示效果如下:

(点击放大图像)

有时,为了更加详尽地洞察实验效果指标的更多细节,需要对实验指标按某一个维度进行分解,达到更小观测粒度。比如,微博用户在不同的设备平台(PC,安卓平台,IOS 平台)不一样的操作习惯和兴趣习惯,可以分平台粒度查看该对比实验在各个设备平台的实验指标变化情况;微博不同场景信息(关系信息流,兴趣信息流,热门搜索流等)的属性存在天然差别,部分策略在分场景流去分析时可能回更有意义;另外,也提供了分广告竞价类型的实验效果跟踪分析。

技术之外

最后需要提的是,实验平台在效果跟踪决策方面是有一定的局限性的。实验平台可以进行实验效果的快速跟踪,但是却很难进行实验效果好坏的决策。比如:如果对比实验效果指标值全部提高或下降了,可以简单认为对比实验的策略调整起正向作用或者反向作用;如果对比实验的实验效果指标值部分提高了,部分下降了,就不太好认定了。还有,实验效果的短期效应和长期效应也可能是不一致,这将大大增加了实验效果好坏的决策难度。

因此,实验平台是可以快速提升广告业务策略迭代效率的工具,但是要想进行实验好坏评定的决策,还需要很长的路要走。

为了弥补这个不足,可以成立一个实验平台评审委员会。通过非技术手段进行线下决策,包括实验的效果好坏评定,是否进行实验的发布,对生产环境的长期效应等一些列的决策。

作者介绍

李铁牛,目前就职于新浪微博广告平台部,粉丝通广告平台技术负责人。2011 年毕业于中国科学院大学,2012 年加入新浪微博,参与并主导了粉丝通,品牌速递,应用家,超级粉丝通等多个核心广告产品迭代开发和投放平台的架构设计工作,完成粉丝通广告架构由产品线型向平台型架构的转型, 主导开发了 Faraday 分层实验平台。 目前,本人从事关于高并发、高性能、高可用的广告平台架构设计,以及广告投放策略研究和团队管理等工作。

2017-05-25 17:186611

评论

发布
暂无评论
发现更多内容

赞赞赞!融云收获行业媒体「组团打 Call」

融云 RongCloud

一文总结ACE代码框架

OpenHarmony开发者

OpenHarmony

Diffie-Hellman密钥协商算法探究

百度Geek说

数据安全 企业号 1 月 PK 榜

无监控,不运维!深入浅出介绍ChengYing监控设计和使用

袋鼠云数栈

要避免的自动化实践

FunTester

行业分析| 交通综合执法对讲系统

anyRTC开发者

指挥调度 快对讲 语音对讲 视频对讲 综合执法

总有一个你能用上的29个IDEA小技巧

风铃架构日知录

Java 程序员 IDEA IT 开发工具

牛啊!长这么大还是头一次见24W字的SpringBoot从入门到实战文档

程序知音

Java spring 微服务 springboot 后端技术

网页抓取中最常用的三大 Python 库

极客天地

文末领资料 | 研发效能领域的三个年度关键词

思码逸研发效能

研发管理 研发效能

ElasticSearch必知必会-基础篇

京东科技开发者

大数据 搜索引擎 数据分析 技术分享 Elastic Search

华为云Stack新版发布:构筑行业云底座,共创行业新价值

华为云开发者联盟

云计算 后端 华为云 企业号 1 月 PK 榜

软件测试/测试开发 | AppCrawler 自动遍历测试工具实践(一)

测试人

软件测试 自动化测试 测试开发 自动遍历 AppCrawler

学术加油站|机器学习应用在数据库调优领域的前沿工作解读

OceanBase 数据库

数据库 oceanbase

react源码中的hooks

flyzz177

React

react源码中的fiber架构

flyzz177

React

react hook 源码完全解读

flyzz177

React

数字图像处理笔记

嵌入式视觉

数字图像处理 几何变换 低通滤波 图像锐化 高通滤波

信用卡APP评测系列:科技赋能信用卡APP创新升级,助力客户体验提升

易观分析

金融 信用卡

火山引擎 DataLeap 通过中国信通院测评,数据管理能力获官方认可!

字节跳动数据平台

大数据 数据治理

【Redis 技术探索】「数据迁移实战」手把手教你如何实现在线 + 离线模式进行迁移 Redis 数据实战指南(数据检查对比)

码界西柚

redis 1月日更 数据对比 Redis-full-check

大咖说·对话开源|与Tapdata论道数据技术开放生态

大咖说

开源

使用 NineData 高效编写 SQL

NineData

数据库 sql 数据库开发 数据管理工具 NineData

编程的终结;展望2023年AI系统方向;AI的下一个阶段

OneFlow

人工智能 深度学习

TDengine 公布 2022 年度中国时序数据应用创新奖,33 个科技企业创新应用脱颖而出

TDengine

数据库 tdengine 时序数据库

【等保小知识】等保四级是最高级别吗?等保四级适用于哪些领域?

行云管家

等保 等保测评 等保四级

【等保小知识】等保3.0就是等保三级吗?

行云管家

等保 等保2.0 等保3.0

开源共建|旺链科技与FISCO BCOS达成产业应用合作

旺链科技

区块链 开源 区块链技术

Java高手速成 | 高质量代码编写最佳实践

TiAmo

编程好习惯 设计原则 Java’

硬实力,高潜力!旺链科技当选“2022德勤中国高科技高成长50强”

旺链科技

区块链 区块链技术

HDI压合设计准则作业规范

华秋PCB

PCB PCB设计 HDI

微博广告分层实验平台(Faraday)架构实践_最佳实践_李铁牛_InfoQ精选文章