流量录制回放是什么?
流量录制:在不影响用户正常使用的前提下,获取线上用户的真实请求和服务响应结果,将其保存或者转发到目标应用。
采用不同的流量录制手段,可以采集不同传输阶段的流量。
流量复制方式:
基于应用层的复制:
优点:实现简单
可以实现应用内部方法级的流量录制;
缺点:拓展性差,一般支持某种协议;
复制从应用层开始,穿过整个协议栈,通常要占用底层的资源;
与应用耦合一起,容易对应用造成影响,比如超时;
会出现丢包的情况;
基于数据包的复制
缺点:复杂,难度大
优点:不需要穿过整个协议栈,对资源的占用相对较低;
理论上支持此协议上的所有应用层协议录制;
流量回放方式:
在线方式:将复制的流量实时地转发到目标服务上
离线方式:将复制的流量先保存到数据库或文件中,再将处理或筛选后的流量回放到目标服务
为什么当下被广泛应用?
流量复杂,请求构造成本比较高;
业务复杂,业务场景梳理困难,流量配比不真实;
服务复杂,服务调用关系复杂,服务模块多,构成成本高;
应用场景有哪些?
压力测试
各大公司进行模块级压测或者全链路压测基本都是采用流量录制的方式,先对录制的流量进行存储,然后对流量进行编辑、过滤后通过压测引擎向被测服务发压
回归测试
传统的接口测试方案,通过部署环境、构造请求、发送请求、结果断言的方式相对目前复杂业务场景来说太单一了,一是构造的请求过于简单,大多是标准的正常的请求,二是环境依赖太多,封闭环境部署困难。所以越来越多的公司项目采用流量回放的方式进行稳定性测试和功能回归测试,结果评定主要依赖指标统计维度和response维度的diff。
问题调试
面对当前节点众多、交互繁杂的微服务架构模式,问题定位太难了。
数据构造
录制的数据进行数据特征分析,聚类场景数据,用于接口测试,当然这个通常指应用层录制的数据。
数据mock
用场景数据进行接口或方法级的mock
Badcase挖掘
总之复杂业务场景下,数据是分析业务场景、构建测试环境、构造测试数据、保证服务质量的宝贵资源。
有什么局限性?
使用局限性
新服务没有线上流量,无法进行复制;
对于复制的流量,可能需要进行筛选,重新流量配比后才能模拟某个场景使用;
录制流量进行回放时,和初始真实场景有变动;
安全性
流量录制功能对架构和设计要求较高,否则容易影响线上性能;
流量回放需要设置相关的标识,进行相关的短路、影子苦表处理方式影响线上功能;
注意事项有哪些?
线上服务安全保障:流量复制以不影响线上功能为前提,包括对线上数据、日志的污染;
录制流量染色:对录制流量进行标识,以实现对录制流量的特殊处理,包括写隔离、写短路等;
并发控制:录制流量服务多少要占用服务资源,尤其应用层实现的录制回放功能,需要进行充分的测试评估才能投入使用,并根据实际情况控制并发;
录制回放开源项目
如果评价录制回放工具的优劣:
部署的复杂性
使用限制及存在缺陷
比如,必须部署在一个网段
功能拓展
多点录制
流量伸缩
实时在线模式
性能
占用资源
是否支持高并发
网友评论