参考文档:
https://www.cnblogs.com/imyalost/p/18034653 ↗
相关企业解决方案(仅供参考)
https://mp.weixin.qq.com/s/yll3QKBOWN_cZGENeQP1lw ↗
https://javakk.com/2977.html ↗
流量录制回放,就是通过录制线上的真实流量,然后在测试或者生产环境模拟请求进行验证的一种技术方法。
核心价值#
-
避免压测工具生成的“假流量”与实际场景脱节,录制的用户流量符合实际场景。
-
检测接口兼容性、性能瓶颈、数据一致性等问题。
-
便于线上bug在测试环境的复现。
常见的流量录制方案#
- JVM-SANDBOX-Repeater :
通过阿里开源的 Jvm-Sandbox 实现字节码增强,无需修改应用代码即可拦截请求/响应**。**
优点:
-
无侵入,通过
-javaagent参数动态加载 Agent 即可启用 -
基于字节码增强,仅录制关键调用链(如 HTTP 请求、RPC 调用、数据库操作),对生产环境影响较小。
-
支持 HTTP、Dubbo、Spring MVC、MyBatis、HttpClient 等主流 Java 技术栈的流量录制
(因为是字节码增强,对性能还是有一定的损耗)
- ngx_http_mirror_module:
Nginx内部模块,提供流量复制功能,可以将生产环境的流量直接拷贝到预上线环境或测试环境
优点:
- 也是无侵入,只需要进行nginx配置即可
- Nginx 处理镜像流量的性能开销极低
(但是因为是nginx层面的设置,在网络层工作,仅复制原始请求,不包含业务逻辑中的上下文信息,如用户 ID、Trace ID,也不能捕获消息队列、定时任务等异步操作,更适合实时压测啥的)
流量重放存在的问题#


企业参考方案#
https://mp.weixin.qq.com/s/yll3QKBOWN_cZGENeQP1lw ↗
转转这个基本就是用了JVM-SANDBOX-Repeater,全文也是在介绍相关技术
https://mp.weixin.qq.com/s/USM6mkVeEyOv6anwnyI0oQ ↗
协程AREX平台