首页 > 其他分享 >月光宝盒(vivo流量录制回放平台)正式对外开源

月光宝盒(vivo流量录制回放平台)正式对外开源

时间:2023-04-07 09:47:28浏览次数:53  
标签:回放 录制 vivo 开源 流量 agent 月光宝盒

作者:vivo 互联网服务器团队- Liu Yanjiang

月光宝盒是一个基于流量录制回放的自动化测试平台,通过录制回放取代编写脚本进行自动化回归,提升测试效率和覆盖率。因为其解决方案具有很强的通用性,所以我们把这它开源出来,希望能帮助到有需要的用户。

一、月光宝盒 是什么?

Moonbox(月光宝盒)是 JVM-Sandbox 生态下的一款流量录制回放产品。所谓流量录制回放是服务端通过挂载agent探针自动注册到服务端,拦截服务端调用,将所有外部调用依赖的内容(如数据库、分布式缓存、外部服务响应等)进行完整记录形成录制流量。其核心价值是通过录制流量数据,将流量数据转化成可复用、可执行的自动化用例,快速在测试环境中进行回放比对接口返回值和外部调用依参数(见下图)。Moonbox(月光宝盒)提供了大量的常用插件,能够对常见的中间调用进行录制回放,同时也提供了非常可靠、高性能的数据存储、计算能力。

 

 

二、月光宝盒 有哪些优势?

正如开头所说月光宝盒是一款面向测试、研发工程师使用的低门槛、高性能、更易于使用的自动化测试工具。这款产品已经在vivo运行了2年多了,经过我们持续优化、打磨拥有很多实用、易用功能。它的优点主要体现在下面几方面:

2.1 全面可视化视操作(部分功能)

(1)基于任务、接口维度的流量管理能力

 

 

(2)详细的流量展示细节(请求、响应、子调用)

 

 

(3)基于任务、接口维度的回放数据管理,叠加各种维度统计、查询能力

 

 

(4)易于人工分析的回放比对结果和差异展示

 

 

2.2 丰富的插件支持

月光宝盒支持非常多组件录制和回放能力,基本上能满足绝大多数人诉求。

图片

2.3 多种部署方式

  • Docker:这种方式简单、可靠,让您可以摒弃复杂的环境配置和安装,快速在本地体验我们项目。

  • 常规方式:这种方式复杂、步骤繁琐,需要按照步骤创建ES和MySQL数据库,初始化数据表,更新好应用配置,安装好前端node服务。

此外月光宝盒是前后端分离项目,当您使用该项目需要分别部署前端、后端,非常有助于您后续将项目部署到生产环境。

2.4 性能安全可靠

平台对性能进行了长期优化,在vivo内部历经多个高并发系统验证。我们对agent端录制流量进行了一系列安全防护,例如对相同接口同时只能有一个进入采样中,限制并行录制接口数量。服务端使用了ES储存流量,有效提升了数据储存规模。

三、月光宝盒 实现原理

3.1 整体架构

月光宝盒平台分为2个部分,分别为moonbox-agent 和 moonbox-server(整体架构如下图所示)

moonbox-agent

  • 使用Java-attach技术(实际的动态字节码增强由JVM-Sandbox实现)动态代理到目标进程上,提供流量录制和回放的增强。

moonbox-server

  • Agent端使用接口,提供配置查询、录制流量保存、流量查询、回放结果保存等服务

  • 录制任务/回放任务的配置,agent任务远程管理能力和管理后台操作界面(前后端分离部署)

 

 

3.2 流量录制&回放

流量录制

核心逻辑是将agent分发到用户填写的机器上(本地、远程机器),然后将agent attach到用户填写应用所对应的正确进程上去。然后通过JVM-Sandbox的BEFORE、RETRUN、THROW事件机制拦截关键调用位置获取流量入参、出参。整体流程见下图整体流程见下图:

 

 

流量回放

核心逻辑是将agent分发到用户填写的机器上(本地、远程机器),然后将agent attach到用户填写应用所对应的正确进程上去,agent启动后从服务端不断拉取流量去分发到对应接口做回放,整体流程见下图:

 

 

 

心跳管理

Agent启动后会单独开启线程固定间隔时间通过http请求给服务端上报心跳

 

 

3.3 Agent启动过程

执行脚本将sandbox agent attach到目标java进程上,sandbox 启动jetty服务,加载moonbox module,然后从服务端拉取moonbox配置,加载流量录制和回放插件。

 

四、 和 jvm-sandbox-repeater 关系?

Moonbox是基于jvm-sandbox-repeater重新开发的一款流量回放平台产品。在jvm-sandbox-repeater基础上重写了很多模块,并提供了更加丰富功能,同时便于线上部署和使用,和jvm-sandbox-repeater差异如下:

五、为什么要开源?

流量录制回放技术复杂,挑战较高,开源社区虽然有很多类似产品但是在易用性方面都有一些欠缺,我们希望通过开源月光宝盒帮助对该方向有兴趣的开发者快速构建自己的自动化工具,同时可以基于我们这款产品制定个性化诉求。此外,月光宝盒本身也借鉴了jvm-sandbox-repeater设计和方案,是开源的受益方,现在我们将自己思考和探索回馈给开源社区,丰富流量回放开源技术生态。除此之外通过社区中开发者的使用,也可以帮助我们更好的改进我们的工具,获得更多的需求场景输入,也能让该工具获得更加长远的发展。

 

六、Roadmap

月光宝盒已经完成V1.0.0版本开源,初步完成了各项重要功能开源,后续我们会持续性的完成平台性能、体验优化工作,同时积极收集社区使用反馈的功能需求,将一些好的需求纳入我们版本计划里面。2023年我们规划了一些迭代版本,如下图所示:

七、写在最后

今天月光宝盒的开源只是我们迈出的一小步,后续我们会持续按照计划向社区贡献版本和特性。如果您对月光宝盒有兴趣,欢迎体验我们开源产品。如果您有问题或者更好的方案,欢迎向我们开源项目贡献反馈ISSUE和贡献PR,这将是我们莫大的荣幸。

 

GItHub项目地址:https://github.com/vivo/MoonBox

标签:回放,录制,vivo,开源,流量,agent,月光宝盒
From: https://www.cnblogs.com/vivotech/p/17292127.html

相关文章

  • 开源云原生存储rook:块存储快速入门实战
    BlockDevices(块存储)在Rook中,块存储有两种存储类型:副本存储和纠删码存储。这两种存储类型都可以在Kubernetes集群中使用,可以通过在CephBlockPool中指定不同的存储类别来实现。「副本存储:」 是一种基于副本的存储方式,其中数据被复制到多个节点上,以提高数据的可靠性和可......
  • 开源微服务低代码的几大亮点内容
    在日新月异的发展中,低代码开发平台的应用价值越来越高,可以给企业提高办公协作效率,实现办公自动化发展。那么,开源微服务低代码平台都有哪些亮点内容?通过本文,我们可以了解这个平台的内容概述,也可以看到开源微服务低代码平台的使用价值。1、关于开源微服务低代码平台的发展在信息化......
  • xUtils-master开源框架
    下载地址   点击打开链接  https://github.com/tablle/xUtils-master用于下载资源使用的框架xUtils-master xUtils简介xUtils包含了很多实用的android工具。xUtils最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加......
  • 最新版本 Stable Diffusion 开源 AI 绘画工具之使用篇
    目录......
  • Wikijs简介-强大&可扩展的开源维基软件
    Wikijs-最强大最可扩展的开源维基软件使用wiki.js美丽直观的界面,让文档成为写作的乐趣!优点......
  • 推荐三个不错的开源项目
    阅读文本大概需要2分钟。新的一周,给大家推荐三个最近发现的不错的开源项目,相信你会用的上的。1. VasSonicVasSonic是腾讯SNG增值产品部QQ会员部门研发的一个轻量级的高性能的Hybrid框架,专注于提升页面首屏加载速度,完美支持静态直出页面和动态直出页面,兼容离线包等方案。......
  • 成为钢铁侠!只需一块RTX3090,微软开源贾维斯(J.A.R.V.I.S.)人工智能AI助理系统
    梦想照进现实,微软果然不愧是微软,开源了贾维斯(J.A.R.V.I.S.)人工智能助理系统,贾维斯(jarvis)全称为JustARatherVeryIntelligentSystem(只是一个相当聪明的人工智能系统),它可以帮助钢铁侠托尼斯塔克完成各种任务和挑战,包括控制和管理托尼的机甲装备,提供实时情报和数据分析,帮助托......
  • neondatabase 开源的k8s postgres autoscaling 工具
    autoscalingneondatabase开源的pg扩展工具(核心是解决neondatabase的一些问题),但是设计上有不少值得学习参考的地方参考架构  说明autoscaling设计上实现了自己的一个vm(支持在线迁移业务影响小),实现了自己的scheduler,也算是一个不错的k8s扩展开发参考项目参考资料......
  • 开源 文本到视频:Tune-A-Video 本周 star 增长数:1,050+,主语言:Python
    开源不到48小时获35kstar的推荐算法「GitHub热点速览转载自己笔记备用 非公开  原作者博客园 本周的热点除了GPT各类衍生品之外,还多了一个被马斯克预告过、在愚人节开源出来的推特推荐算法,开源不到2天就有了35k+的star,有意思的是,除了推荐算法本身之外,阅......
  • vivo 全球商城:优惠券系统架构设计与实践
    一、业务背景优惠券是电商常见的营销手段,具有灵活的特点,既可以作为促销活动的载体,也是重要的引流入口。优惠券系统是vivo商城营销模块中一个重要组成部分,早在15年vivo商城还是单体应用时,优惠券就是其中核心模块之一。随着商城的发展及用户量的提升,优惠券做了服务拆分,成立了独立的优......