引言
本文对流量录制和回放常见的方案、用途以及设计原理做个归纳整理。
一、解决的问题
测试用例不足或者遗漏难以覆盖所有场景,导致回归测试费时费力,线上稳定存在隐患,通过真实流量录制在回归测试时进行覆盖。
解决全链路压测的数据准备问题,通过流量录制和回放系统与压测系统打通,形成从流量录制到压测闭环。
二、常用方案
https://github.com/buger/goreplay
实现原理
依赖数据包捕获函数库(Packet Capture library)通过抓网络流量包,实现流量录制功能,go语言编写。
优点归纳
缺点归纳
https://github.com/alibaba/jvm-sandbox-repeater
实现原理
实现Java Instrumentation接口编写Agent,通过jvm对外编程接口规范JVMTI,实现对jvm运行信息的获取以及执行程序的加载,java开发。
优点归纳
缺点归纳
三、实现架构图
下图为基于上述两种方案的设计简图,通过运行一个录制代理ReplayAgent的方式实现。
功能点归纳