Conference Paper · May 2018 The Anatomy of a Large-Scale Online
Experimentation Platform。nginx
由于工做负责和ABTest相关的事情,因此对ABTest系统理论与工程落地状况一直在调研,根据上面这篇论文,咱们一块儿来学习下微软EXP系统的工程实现。摘要及其相关工做啥的废话略过,先放一张架构图:
web
整个系统包含四部分:算法
experiment portal
:portal属于一个实验管理后台系统,为实验者与实验系统之间提供交互接口,实验者能够方便的在系统中建立,配置,运行并分析实验。其中系统包含三个重要的组件:后端
实验管理界面应具备如下功能:浏览器
re-randomization
:使用历史数据批量作AA实验,通常经过AA实验选择最合适的hash算法,目的是为了让样本尽量均匀,而后才能作AB实验,为了提升销量,巧妙的使用历史数据作AA,这个过程叫作SeedFinder
。experiment execution service
这个是ABTest的核心服务,为各个接入AB的服务分配实验变量。每一个变量V是一个参数集合,实验能够表示为E{V1, V2}, 如V1实验组,V2对照组。isolation group 会切分红多个变量,以下图:
缓存
每一个变量都会被关联上一个或多个isolation group,好比存在两个实验E1{V1, V2}, E2{V3, V4},E1关联隔离组G1,G2。同时E2的变量也关联G1,G2。 会发现两个实验变量所关联的隔离组是有交集的,那么这时候说明两个实验是会相互影响的,不能同时进行。网络
列举了三种实验组参数配置下发方式:
总之都是从experiment execution service
拿到实验组参数配置并缓存在本地。session
experiment execution service
交互,对请求进行增强(填充改次请求 所对应的实验参数配置)。这种方式不适合客户端实验, 由于客户端用户操做不少都是本地行为,没有发生网络交互experiment execution service
周期性交互还有个配置管理服务 去控制experiment execution service
进行一个实验下不一样的变量分配的开关, 该开关配置应该放到lib里架构