Internet实验平台设计:流量框架

本篇开启一个新的系列:互联网实验平台设计,结合过往工作中实验平台涉及的一些原理、实践、经验展开,也是对过往工作的梳理,希望对从业同学有帮助。

Google重叠实验框架

Google在2010年发表的论文《Overlapping Experiment Infrastructure more better faster Experimentation》提供了经典的流量管理框架包括了对实验流量、实验参数的管理。

Google重叠实验框架

通过重叠实验框架可以实现:

  1. 更多,水平正交的实验层上可以创建实验,提升了实验的容量,通过Hash算法保证流量充分打散,避免了不同实验之间的影响
  2. 更好,通过参数管理支持更安全的实验(参数使用的互斥、推全等);通过流量提供的定向能力可以实现更好的流量圈选;通过不同实验类型(比如普通实验、定向实验、垂直实验/holdout实验、关联实验/父子实验、组合实验等)的设置实现实验之间流量的互斥、正交;提供流量&关键指标的监控能力及时纠正错误的流量使用;提供流量、实验周期的建议;提供实验日志支持指标计算
  3. 更快,实验框架和工程框架解耦合(两个框架通过业务框架链接),提供了一种运行时的配置注入,实验配置可以通过layer、domain、parameter等不同粒度获取,这种情况下实验的开发成本较小,并提供了对不同工程框架的兼容; 提供实验分析能力支持快速的实验分析和结论

重叠实验框架实现

重叠实验框架在实现中需要注意以下几点:

  • Hash算法和流量正交控制
  1. Hash算法的选择需要兼顾性能和正交性,常用算法有murmur3、cityhash、md5等
  2. Hash使用的seed尽量减少相关性
  3. 实际使用中只有一次Hash分流的框架建议使用千分桶或者万分桶,支持多次Hash的框架建议直接使用百分桶(通过多次Hash可以实现千分桶或者万分桶的流量控制效果)
  4. 桶的分配和使用建议优先分配最久未使用的分桶,最大程度减少前序实验的延滞效应对新实验的影响
  5. 实验层支持定期shuffle将流量重新打散
  • 流量管理和Hash路径
  1. 实验框架通过Hash路径管理,Hash次数越多提供的流量控制越精细但是分流效率和流量框架的管理和理解复杂度也越高,需要慎重权衡
  2. Google重叠框架提供了a-d四种选项,通常的实验需求Figure C基本可以满足,即第一次Hash区分垂直流量、水平流量域,第二次Hash在水平流量层或者垂直流量域上进行分流
  3. 特殊需求例如在水平层间希望进行互斥的流量控制,可以参考Figure D的实现(域和层的嵌套结构),但是未必需要对用户透出技术细节(可以通过工程上的一些虚拟层、虚拟域支持)
  • 实验框架和业务框架
  1. 实验框架对业务框架的映射并提供稳定性,域名称、层名称、参数名称呼应业务框架
  2. 工程框架在请求实验框架获取实验配置时便于理解和集成,例如域可以对应具体的业务场景,层&参数对应具体的业务请求
  • 参数管理
  1. 实验框架提供参数的生命周期管理,从参数创建到实验中配置使用参数,到参数的推全(包括实验框架配置推全、工程框架代码推全)
  2. 参数值的管理,通过参数值的管理可以提供快捷、安全的配置并通过默认值实现推全控制
  3. 流量和参数尽量解耦合,更好的支持多参数实验(MVT multi-variate test)

重叠实验框架支持了更多的实验、更好的流量控制,支持实验三大原则:重复、随机、区组,确保实验结论的科学性、可信性。

作者:展博,多年数据咨询、数据产品经验,跟您分享下我们身边数据的故事,欢迎咨询:数据产品建设、数据分析&营销&运营体系构建,让数据来说话。

发表评论

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据