什么是流量回放?有哪些方案可以借鉴? | 您所在的位置:网站首页 › 流量包线上是什么意思 › 什么是流量回放?有哪些方案可以借鉴? |
目录
前言原理开源方案调研sandbox-jvm-repeatersandbox-jvmsandbox-jvm-repeater
RDebug
分析参考
前言
做开发的人都知道自动化测试,自动化测试不需要人为去触发一个个行为,系统自动运行测试用例。价值不言而喻,但是如果自动化测试用例的缺失部分导致系统没完整测试回归可能会给系统带来风险。 这里就是流量回放的价值:通过记录线上流量,在开发或者测试环境回放,来发现系统是否能够正常运行,降低代码变动整体系统带来的风险。 原理通过AOP请求和响应的拦截,并且进行请求和响应的记录,在开发环境通过解析结果进行回放。 什么是AOP 面向切面编程,spring的AOP就是一种实现。当然还可以很多其他实现,例如基于jvm的AOP,可以通过在通过装饰jvm中的class实现;例如其他语言也有对应的实现AOP 的2种实现方式 不同的语言、不同的框架AOP的实现可能不同,但是从思想上都是基于以下2种 通过代理实现对目标访问的行为装饰通过对目标行为进行修改实现 开源方案调研 sandbox-jvm-repeater想要理解该方案,我们需要先理解sandbox-jvm sandbox-jvm我们先简单了解下sandbox-jvm的原理 原理 通过与目标jvm建立连接实现通信![]() ![]() 在大致理解sandbox-jvm的原理后,我们再看repeater 原理 通过记录目标jvm的请求与响应数据,发送控制台进行存储,然后在控制台进行回放![]() 一块滴滴开源的流量回放工具, RDebug是在线上录制流量,在非线上环境进行回放的整体方案框架,这里介绍下其核心模块,流量的回放与录制。 录制 Koala: 是RDebug的流量录制引擎,采用go编写,其中依赖了部分c++代码(Koala-libc.so模块),通过拦截tcp request和response来进行流量的记录,通过将线程的id作为session的标识进行跟踪 如果语言栈是java,考虑采用repeater,文档更加细致原理也很明确,开发更容易做维护; 如果语言栈不是java,那么repeater基于jvm实现,是无法满足的, 可以考虑采用后者。 由于我们的语言栈是java,后面我们仔细分析下repeater。 参考sandbox-jvm sandbox-jvm-repeater sandbox-jvm-repeater入门 rdebug-koala |
CopyRight 2018-2019 实验室设备网 版权所有 |