趋于当前技术不断更新、产品功能多元化之下,流量回放的热度也是越来越高。
在前一段时间,测试团队也提到阿里开源的流量回放工具 jvm-sandbox-repeater
我个人就先尝试一下,期间还是遇到一些问题,通过咨询和度娘的帮助下,整体功能的使用流程是跑通了。
jvm-sandbox-repeater简介
在聊之前,我们先来了解下jvm-sandbox-repeater,其实在官网上也有详细的介绍,这里就直接搬官网的吧
jvm-sandbox-repeater是JVM-Sandbox生态体系下的重要模块,它具备了JVM-Sandbox的所有特点,插件式设计便于快速适配各种中间件,封装请求录制/回放基础协议,也提供了通用可扩展的各种丰富API。
目标人群
-
线上有个用户请求一直不成功,我想在测试环境Debug一下,能帮我复现一下吗?
-
压测流量不知道怎么构造,数据结构太复杂,压测模型也难以评估,有什么好的办法吗?
-
不想写接口测试脚本了,我想做一个流量录制系统,把线上用户场景做业务回归,可能会接入很多服务系统,不想让每个系统都进行改造,有好的框架选择吗?
-
我想做一个业务监控系统,对线上核心接口采样之后做一些业务校验,实时监控业务正确性。
如果你有以上的想法或需求,jvm-sandbox-repeater 都将是你的不二选择方案;框架基于JVM-Sandbox,拥有JVM-Sandbox的一切特性,同时封装了以下能力:
- 录制/回放基础协议,可快速配置/编码实现一类中间件的录制/回放
- 开放数据上报,对于录制结果可上报到自己的服务端,进行监控、回归、问题排查等上层平台搭建
repeater的核心能力
-
通用录制/回放能力
无侵入式录制HTTP/Java/Dubbo入参/返回值录制能力(业务系统无感知)
基于TTL提供多线程子调用追踪,完整追踪一次请求的调用路径
入口请求(HTTP/Dubbo/Java)流量回放、子调用(Java/Dubbo)返回值Mock能力
-
快速可扩展API实现
录制/回放插件式架构
提供标准接口,可通过配置/简单编码实现一类通用插件
-
standalone工作模式
无需依赖任何服务端/存储,可以单机工作,提供录制/回放能力
repeater的应用场景
-
业务快速回归
基于线上流量的录制/回放,无需人肉准备自动化测试脚本、准备测试数据
-
线上问题排查
录制回放提供"昨日重现"能力,还原线上真实场景到线下做问题排查和Debug
动态方法入参/返回值录制,提供线上快速问题定位
-
压测流量准备
0成本录制HTTP/Dubbo等入口流量,作为压测流量模型进行压测
-
实时业务监控
动态业务监控,基于核心接口数据录制回流到平台,对接口返回数据正确性进行校验和监控
jvm-sandbox-repeater服务部署
环境准备
建议在Linux环境下使用,windows下可能会出现路径不一致的情况,我使用的环境如下:
- Linux
- JDK 1.8
- Maven 3.2
- Mysql 5.7
如果只是想简单体验下,则用不到Mysql,可以参考官网的