无侵入的线上流量录制回放平台


大家好,我是爱学习的了不起!

当前互联网服务现状是调用关系复杂,服务模块多,流量复杂,业务复杂,对于测试团队构造请求成本比较高,如果还按照传统的人工构造请求参数,相对目前复杂业务场景来说太单一了。

今天了不起给大家分享一个线上流量录制流量回放平台 – MoonBox。

项目简介

Moonbox(月光宝盒)是一个无侵入的线上流量录制流量回放平台。

简单介绍一下什么是流量录制与回放?

流量录制回放就是通过记录线上流量,在测试环境回放,来发现系统是否能够正常运行,降低代码变动带来的风险。

流量录制把一次请求的入参、出参、下游RPC 等存储起来,流量回放是把录制数据还原,重新发起请求。

项目优势

  • 通过流量录制可以很容易形成丰富的测试用例

  • 回放线上流量更真实,人工编写的测试用例可能会有考虑不周的地方

  • 回放线上流量可以复现生成环境中问题,完美解决了本地好使的,线上问题不知道怎么产生的。

  • 没有代码侵入,通过代理对流量录制和回放的增强

  • 可视化调用链路

  • 定时录制和回放,减少人工操作

  • 接口维度的流量管理

  • 详细展示流量详情,包括请求的参数、响应参数 和 该请求的 子调用详情

项目原理

月光宝盒平台由 moonbox-agent 和 moonbox-server组成。

moonbox-agent

agent(基于动态字节码增强技术实现)动态代理到目标进程上,提供流量录制和回放的增强。

moonbox-server

server 主要是做后台配置,保持录制的数据,同时为 agent提供接口。

流量录制

通过JVM-Sandbox的BEFORE、RETRUN、THROW事件机制拦截关键调用位置获取流量入参、出参,实现流量录制。

流量回放

agent 启动后从服务端 拉取流量去分发到对应接口做回放。

快速体验

下载完代码后,在工程下的docker文件夹 下,执行如下命令:

1
2
3
4
# x86架构下
docker-compose -f docker-compose.yml up
# arm架构下
docker-compose -f docker-compose-arm64.yml up

启动后,在浏览器输入 http://127.0.0.1:9999/ ,即可访问月光宝盒平台。

配置流量录制

流量回放

在录制处回放

更多操作细节参考官网文档,这里了不起就不过多赘述了~

项目地址

1
https://github.com/vivo/MoonBox

写在最后

欢迎加我微信,邀请加入 交流群,目前群里都在讨论整理更多GPT玩法,教你如何更好的调教使用GPT,提升效率,甚至如何使用GPT赚钱等等,欢迎围观~

问君能有几多愁,开源项目解千愁,我们下期再见!

大家的点赞、收藏和评论对了不起非常重要,如文章对你有帮助还请转发支持下,谢谢!


文章作者: 开源小分队
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 开源小分队 !
  目录