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流量录制回放平台)正式对外开源
崇义聂都抓实早稻生产
世界热点评!中煤能源:二级市场股价表现受到多方面因素的影响,公司不存在应披露而未披露的信息
中新网评:做强做优做大数字经济 为数字中国建设注入澎湃动力 世界速讯
当前动态:肯尼迪侄子宣布参选美国总统,他会是下一个特朗普吗?
【报资讯】中南建设:前3个月销售额120亿元,拟定增募资最多28亿元
广西提高服务贸易水平 推动优质桂品“出海”
视觉志
4月4日基金净值:前海开源优质龙头6个月持有混合A最新净值0.8294,跌0.34%
品牌冠名合同范本(通用16篇):世界资讯
【独家焦点】深化甘肃兰白与上海张江科技创新合作
“清明”文物 以鲜花遥寄追思 以酒樽为礼器缅怀告慰
环球热资讯!工笔是哪种绘画形式的技法(工笔中国传统画技法的一种)
不道德的礼物看不了
世界微动态丨太公传承如何获得功法技能 太公传承获得功法技能攻略
傅聪:中方欢迎欧盟领导人访华,希望共同推动中欧关系向前发展
每日看点!英雄之光|“陈祥榕,到!”
日本外长:将向乌克兰提供76亿美元的援助
环球微头条丨福布斯发布2023亿万富豪榜 全球新首富诞生:要把股份平均分给五个子女
家国永念丨2023清明烈士迁葬祭扫直播_快看点
西游记中的黄袍怪动漫_西游记中的黄袍怪 每日动态
中国乒乓球运动员排名2022_中国乒乓球运动员排名
全球热资讯!默达生物关于硅谷银行事件的声明
5年顶薪续约?拜拜了!独行侠逼着东契奇走人……
环球短讯!科普|改变新药研发同质化局面,这些症结亟待突破
清明节期间,广州各出入境办证窗口暂停对外办公-世界观热点
当日快讯:翔宇医疗:8023.88万元完成回购245万股公司股份
沪镍期货持仓成本降逾36%,上期所下调11个品种保证金标准_世界微速讯
中国稀土行业协会:3月份稀土价格指数呈缓慢下行趋势:天天新视野
焦点简讯:2023年4月4日安徽省丙烯酸丁酯价格最新行情预测