作者简介
Will Wang,携程技术专家,负责AB实验分流和其他数据智能项目的开发。关注大数据和分布式方面,会做一些深入的开发部署和结合业务数据的基准调试工作。
一、背景
携程是业界比较早进行AB实验的公司。AB实验可以简单认为是传入一个实验号和用户分流ID到AB实验分流器,分流器吐出分流版本A、B、C、D等,通过截取应用流量落地一段时间的分流数据,就可以分析具体版本的优劣,决定启用新版本或者沿用老版本。
携程的AB分流器沿用至今,在业务发展上发挥了很大作用,但也存在一些问题。
1)携程内部,除了携程App,还有小程序、Online页面等都在用AB实验分流器,这些分流器是不同部门维护的不同接口,导致AB实验人员在开发的时候,有时候会用错,或者经过几轮沟通才能找到适合的分流器接口;
2)AB实验分流器在公司越来越多的AB实验应用接入的时候,响应效率不尽人意,没有开始的时候那么好。还有实验新配置的分流规则,在一个访问量大的页面如携程App酒店主页上很难即时生效,有时候要等到凌晨访问量较少时才生效;
3)AB实验方法论也需要改进,从而更精确地指导AB实验结论。但AB实验分流器前端接口里直接引用了AB实验配置表的全量字段信息,导致AB实验配置表随着AB实验方法论改进更新的时候,AB实验分流器也需要更新换代,这对公司的各个实验应用方来说是不可接受的。
基于此,我们开始着手携程AB实验分流器的改进。AB实验分流器的效率改进是重中之重,收口公司众多的分流器接口,迁移旧接口流量到新接口和推进公司AB实验应用采用新分流接口,这样才可以适应AB新方法论上的AB实验配置的更新迭代。
二、改进结果
截至到目前,除少量在2020年年底计划下线的.net应用外,其他的应用都通过公司的slbportal工具把分流流量迁移到改进过的新AB实验分流器接口,或者直接采用了新AB实验分流器。下面贴上新旧AB实验分流器的改进效果,供大家参考。
从以上的流量统计图可以看出,新AB实验分流器在QPS相应更大的情况下(200.7->290.2),P99.9线反而表现的更好(363.1ms->5.2ms)。可见新AB分流器的响应更快,对旧AB实验分流器接口的效率改进还是比较显著的。
三、改进方案
本文将从AB实验分流器整体设计,收口,SDK设计和分流器后台选型设计方面进行分享,主要说明如何提升AB分流器的分流效率,希望给AB实验特别是AB实验分流器的开发人员带来一定的启发和帮助。
3.1 AB分流器整体设计
AB分流器整体设计是用SDK还是service方式,是一开始就要制定的