9

阿里妈妈技术质量开源面向广告搜索推荐系统的线上测试和性能测试平台

 4 years ago
source link: https://www.infoq.cn/article/kkPUuQHcpoAwlGC1ls6t
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

2020 年 4 月 7 日,阿里妈妈技术质量团队开源了线上测试平台 MagicOTP 和性能测试平台 ACP。两个平台经过阿里巴巴广告业务的长期锤炼,在大规模广告搜索、推荐系统的线上测试和性能测试上深耕多年,内置了面向广告搜索、推荐领域的工业级线上测试和性能测试解决方案。

一、ACP(alimama-common-performance-platform)

概述

ACP(alimama-common-performance-platform) 平台是阿里妈妈的全链路智能性能测试平台。区别于业界一些开源的工具和平台,ACP 平台将有监督建模、无监督建模、混沌工程等智能化技术引入到性能测试领域;并将其打造为高性能通用的基础组件。平台提供了压测 query 智能抽取、压测流程智能调控、系统指标智能监控三大智能化功能;在阿里妈妈实现了无人值守的智能化性能测试。

(github 地址: https://github.com/alibaba/alimama-common-performance-platform-acp )

系统核心能力

  1. C++ 高性能压测工具

ACP 提供了 SYNC 同步压测和 ASYNC 异步压测两种模式;同步压测的工作模式是阻塞式发送,异步压测采用非阻塞并发模式,目前开源版本支持同步压测模式。

Chain-Line 链式的线程管理系统,智能调整内部线程和并发数,最终快速达到指定的 qps。

基于 Linux 内核的消息队列的监听服务,在不需要重启进程的情况下做到实时调整 qps。

组件:

  • 智能压测调控框架
  • Chain-Line 链式的线程管理组件
  • Adaptive Auto Control 实时流量调控组件
  • Kernel-queue 消息队列读写组件

压测 Client 工作模式图:

yU7NBze.png!web

  1. 大规模分布式调度服务

性能测试的一个难点是如何高效利用测试资源,在压测机器有限,压测机器规格不一致,压测任务消耗硬件资源不一的情况下;如何高效调度成千上万个 agent 是我们要解决的问题。ACP 平台利用 zookeeper,使用 DFS 深度优先的搜索算法,实现了资源分配粒度达到内核级别,并开源了其产品化的能力。

  1. 基于历史样本的有监督学习建模及预估能力

传统性能测试更多需要人来手工操作,测试效率普遍不高,我们提供了基于随机森林 ( random Forest)、线性模型、非线性等多种算法建模组件;用建模、预估技术代替人力手动调压等操作,用户可以根据业务场景定制自己的建模方案,此外,我们也提供了多种样本处理组件。

  1. 特征样本归一化,对于历史监控数据,我们将样本 (sample) 进行归一化处理 (normalization),将不同量纲、不同单位的样本进行加权处理,保证后续建模的精度。

  2. 特征样本去噪,历史监控数据有很多噪声,如作弊流量,异常流量,而这些噪声会直接影响模型的预估表现,减少无效样本对模型的影响。

  3. 特征样本转换,feature transformer 是将多维特征转为单维 (Single-Demension) 特征的过程,如服务器带宽和 qps 有着强关联,我们将二者做除法得出新特征,即每个请求占用的带宽 (bytes per query),而这种特征能够直观反映系统表现。

qyQJFnz.png!web

  1. 基于实时样本的无监督学习建模及预估能力

我们提供了基于 arima 模型的无监督学习建模预估能力(差分整合移动平均自回归模型,又称整合移动平均自回归模型)。和上述有监督建模预估相比,无监督建模预估准入门槛低,相比于之前的用历史监控数据建模的方案,arima 不需要人为的收集历史数据和打标。

IfauyeJ.png!web

  1. 性能测试用例智能生成

Netflix 提出了 Chaos Engineering,我们基于混沌工程和 fuzz 思想进一步探索了 query 智能组合构造方案,分钟内智能构造千万级数据样本;解决了压测数据样本单一,异常场景构造成本高,覆盖率低的问题,从而可以充分验证系统稳定性,鲁棒性。

nUNvaeU.png!web

后续开源计划

  1. 历史样本有监督学习建模及预估能力
  2. 实时样本无监督学习建模及预估能力
  3. 基于 fuzz 的性能测试用例智能生成方案

欢迎通过邮件组 [email protected] 和 github issue 联系和反馈

二、MagicOTP — 线上测试平台

概述

广告搜索推荐业务上,线下功能测试的覆盖和线上实际场景总是有一定的 gap,深层次的原因是因为业务和算法模型强相关,线下不可能覆盖所有业务场景。鉴于此我们通过使用线上的数据,实时 trace 和智能化技术打造了线上智能测试平台 MagicOTP,通过线上测试很好弥补了线下功能测试覆盖和实际业务场景之间的 gap,实现了全场景的测试覆盖保障,同时在阿里妈妈落地了智能化的无人值守的发布闭环。

(github 地址: https://github.com/alibaba/online-test-platform

系统核心能力

  1. 多种线上数据采集技术(时序、分布、规则采样、基因变异算法等),节省人工构造测试数据的成本,提高测试效率。
  2. 健壮的规则校验引擎,测试数据通过规则进行多维度校验,相比传统冒烟的单点固定验证,具有更高的场景覆盖度。

RbM7Ff2.png!web

  1. 精准的规则智能推荐技术和智能化验证技术,基于大数据分析和字段关联关系(Association Rules)建模,利用推荐算法和异常数据检测 (K-sigma 等) 实现了智能化的规则推荐和校验。

NvquEfI.png!web

  1. 高效的多业务接入能力,在平台配置完任务,任务执行过程中自动推荐出基础校验规则,减少开发成本。当业务变更时维护只需简单修改规则即可。

开源 Roadmap

目前一期提供了基础的线上请求回放能力和规则引擎服务,以及基于此的完整的线上测试方案,后续我们会开源规则智能学习推荐功能和无人值守的发布验证方案。

欢迎通过邮件组 [email protected] 和 github issue 联系和反馈

ACP:

github 地址: https://github.com/alibaba/alimama-common-performance-platform-acp

MagicOTP:

github 地址: https://github.com/alibaba/online-test-platform

研发成员:朱藻、橦录、翰龙、凤暄、凝珂

本文转载自公众号阿里巴巴技术质量(ID:AlibabaTechQA)。

原文链接:

https://mp.weixin.qq.com/s/bxQqfAfsKCGQ_5rp18UWGA


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK