BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Twitter A/B测试技术概览

| 作者 金灵杰 关注 5 他的粉丝 发布于 2015年11月18日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

A/B测试在Twitter的整个产品流程中是着非常核心的一个环节,Twitter通过它来验证新功能是否有效。前段时间,Twitter发布了博客介绍了他们是如何实施A/B测试的。日前,他们又介绍了A/B测试背后的系统。

概览

Twitter从2010年开始使用他们的A/B测试工具DDG(Duck Duck Goose ),它已经成为聚合数据、记录用户行为、分析指标的系统性平台。

下图为A/B测试工具概要数据流。

A/B测试的基本流程

通常来说,A/B测试需要事先设置一些参数和度量值。通过DDG,测试人员可以直接通过网页设置A/B测试的细节:

  • 实验范围,比如限定语言、国家、操作系统等参数;
  • 实验对照组,确定测试修改点和当前产品的区别;
  • 实验指标,设置需要追踪的指标,DDG默认会采集一些基础数据,其他指标可以自定义,或者从库中选取;

通过上述设置,DDG会提供给实验人员一些代码,作为“需求开关”。然后,系统会开始记录实验过程中需要度量的数据。

指标定义

DDG提供三种指标类型:

  1. 内置指标,大部分由实验团队定义和维护(例如登录次数、发推次数等),在实验中这些指标值会被自动追踪;
  2. 实验者定义和配置的指标,实验者可以通过轻量级的领域专用语言(Domain Specific Language,DSL)定义需要记录的事件,DDG的管道会为实验者计算这些指标;
  3. 导入的指标,这些指标完全由Twitter工程师创建,实验者可以创建自定义聚合方法,度量自定义内容;

这些可以被聚合到“指标组”中,以方便实验人员选择。同时,每个指标组都由创建人维护,所有修改记录都会被记录。

数据处理管道

指标数据收集,都会通过管道进行运算。聚合数据也是整个系统中最大的挑战。一个指标源数据每天可能会产生非常大数量级的数据。

实验平台使用Hadoop的Map-Reduce任务来解决运算的性能问题。为了尽可能提高性能,Twitter团队还和Hadoop团队共同合作,做了大量调优。

另外有一些轻量级的流处理任务,会通过TSAR在Twitter的Heron平台进行实时计算。

上图中的Scalding管道,可以被认为有三个不同的阶段。

首先,将原始数据聚合成每个用户、每个小时的基础数据集。这些数据会被作为下一阶段的输入数据,同时也会被用作计算其他数据。

然后,第一阶段生成的数据会加入A/B测试的表达式,并在实验过程中计算每个指标、每个用户的聚合数据。第二阶段的结果可以被用于深入挖掘结果。

最后,第三阶段会汇总所有实验数据。这些实验数据会被加载到Manhattan中,产品团队可以在内部看板中进行浏览。

总结

支撑Twitter A/B测试平台的技术设施非常广泛,究其原因主要是因为庞大的数据量。平台需要对大量数据加以处理,以进行分析和实验。通过管道的设计,也使得平台可以对多粒度数据进行不同类型的分析。


感谢徐川对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT