简介本文总结了交通录放的常见方案、用途和设计原则。一、需要解决的问题1、回归测试覆盖率测试用例不足或缺失,难以覆盖所有场景,造成回归测试费时费力,存在线上稳定性隐患。在回归测试期间使用真实的流量记录来覆盖。针对具体业务场景,返回具体接口和链路全面返回具体业务线2、全链路压测闭环,解决全链路压测的数据准备问题,通过流量记录与压测系统对接和回放系统形成从流量记录到压力测量闭环。对某个链接接口的在线流量进行针对性记录对记录的流量进行压测标记增压开启全链路压测3.其他数据用途提取在线流量测试环境调试复现其他使用在线请求数据的地方2.常用解决方案有多种用于交通记录的解决方案和技术。下面整理出两种常用的技术方案。1、GoReplayhttps://github.com/buger/goreplay的实现原理依赖抓包库(PacketCapturelibrary)通过抓取网络流量包实现流量记录功能,使用go语言编写。优点总结支持流量记录支持流量回放支持流量过滤支持插件机制支持重写(URL、参数、Header等)jvm-sandbox-repeaterhttps://github.com/alibaba/jvm-sandbox-repeater实现原理实现JavaInstrumentation接口编写Agent,通过jvm外部编程接口规范JVMTI,实现jvm运行信息的获取和执行程序的加载,java开发。总结一下优点,快速扩展流量录放的插件机制,已经支持了很多插件。支持http/dubbo/mybatis/java/redis等缺点。设计草图,通过运行一个录制代理ReplayAgent来实现。功能点归纳录制代理ReplayAgent负责接收控制台指令,控制GoReplay或sandbox-repeater。录音代理上报录音数据流量和监控信息。控制台管理流量记录,例如:数据完整性、记录任务状态和结果、记录时间和记录流量。过滤控制台管理流量播放,如:播放结果状态,时长设置,播放速度等。控制台与压测平台通信,回归测试平台代码关注。转载本文请联系瓜农老梁公众号。
