主页 > 社会新闻 >

领英重写了实验引擎:速度提升 20 倍_科技频道_东方资

发布日期:2020-05-29 00:39   来源:未知   阅读:

本文最初发布于领英技术博客,经领英官方授权由 InfoQ 中文站翻译并分享。

在领英,我们常说公司的血液中流淌着实验的基因,因为公司要发布任何产品之前都必须经过实验的检验。所谓“实验”一般指的是“A/B 测试”。领英依靠员工通过数据分析来做出决策。实验是决策流程的数据驱动基础,它可以帮助精确衡量每次变更和发布所产生的影响,并评估产品的期望是否与现实情况相符。

领英的实验平台有着庞大的运作规模:

它可以提供高达 800,000QPS 的网络调用,

它可以同时运行大约 35,000 个 A/B 实验,

它每天可以处理多达 23 万亿次实验评估,

实验评估的平均延迟为 700ns,第 99 个百分位数则为 3μs,

它被用在大约 500 个生产服务中。

这一平台的核心是领英实验引擎,简称“Lix 引擎”。这一引擎需要处理数量巨大的评估和 QPS,并在整个公司范围内广泛应用,因此它的库必须具备很高的性能和资源使用效率,并遵循严格的测试、验证和发布流程。我们知道,对该引擎做出的每一点优化和改进,都会对整个公司的生产服务性能产生重大影响。最近我们就完成了一项重大改进工作,以满足不断增长的需求。

领英服务和 Lix 引擎

图 1 显示了领英服务与 Lix 引擎交互的机制。首先,Lix 引擎会评估 A/B 测试请求并返回实验(treatment)或对照(control)组。根据 Lix 引擎的结果,服务将对应的功能页面返回给会员。什么是 Lix 引擎,它的作用是什么?

从概念上讲,Lix 引擎是一种软件,它可以理解用于实验的领域特定语言(也就是 Lix DSL),并能执行以下三种功能:

对测试总体进行随机分割,

对总体进行细分,

为参与实验的给定实体分配实验变体。

进行 A/B 测试的一个前提条件是将测试总体分为随机、独立的样本桶。为 Lix 引擎提供了样本桶的相对权重后,引擎就可以无缝执行分桶操作。

按 1:4.5 加权的总体随机分割

实验过程的另一个重要需求是向特定的总体子集(例如,所有应届生)发布功能。Lix 引擎可以将总体分为多个群组(称为细分,segmentation),并针对每个细分独立执行随机分割:

总体细分