在线服务系统的AB-test方法有很多种。搭建多个可服务集群,从物理上对流量进行隔离是比较常见的一种方式。这种方式应用于大型复杂的在线服务系统时,存在部署比较慢的问题。这种方式的典型架构如下图所示。
QueryRewrite:改写用户搜索词以期望得到更好的查询结果。
Matching:根据用户搜索词,召回最符合用户意图的那些推广。
Ranking:确定推广的输出顺序,需要兼顾用户体验和搜索平台的收益。
这种架构有两个优点。
这种架构的缺点同样也很明显,主要有如下几点。
我们在总结现有的各种实验机制的基础上,结合阿里妈妈的应用场景实践出了一种高效便捷、能充分利用流量、并行多个实验的方法。该方法也能支持系统的灰度发布,有如下几个优点。
架构整体可以划分为三个系统,如下图所示。
接下来对各个子系统进行详细的介绍。
1. 实验配置管理发布系统
此系统给用户提供便捷的UI操作界面,方便用户添加实验配置流量,然后动态地在线发布。为了弥补各种不可预期的错误,该系统支持历史版本的快速回滚。
2. 在线服务系统
根据用户的实验配置文件,进行分流处理,给各个实验分配相应的流量。实验分流模块以库的方式接入在线服务系统。在系统的流量入口处调用此分流库。后续会详细介绍分流的原理和作系统进行实验的方法。
3. 日志分析展示系统
根据在线服务系统记录的日志,统计出各个实验的效果,供系统分析师或实验观察者使用。然后根据实验的效果,使用实验管理系统去调整各个实验流量的占比。
1. 实验配置管理发布系统
(1) 实验场景。广告系统中,实验是针对某一批广告位或者特定页面进行的。针对PID(标记广告的位置信息)或页面来对流量进行分类就成了一个强需求。将这样一批广告位定义为一个实验场景。web操作页面上需要提供配置实验场景的UI界面,用户可以在这个界面上新建一个场景,指定符合某些PID要求或者URL要求的请求进入相应的实验场景,UI界面如下所示。
来源: http://www.infoq.com/cn/articles/alimama-large-scale-online-hierarchical-experiment