1、自研流量回放工具原理及在广告业务的应用实践分享人:李茂森个人简介姓名:李茂森所在组织:技术中台-质量工程部专业领域:服务端测试目 录010203业务背景及测试挑战自研流量回放工具FlowCopy介绍流量回放在广告业务中的应用04总结与展望业务背景与测试挑战01广告投放系统介绍高并发 亿级PV 万级QPS低时延 处理时间100ms 传输数据量大链路复杂 大型分布式系统 对外为HTTP接口 多模块之间频繁RPC通信广告系统技术特点测试挑战随着系统复杂度的提高,传统自动化测试的弊端凸显高成本人工编写自动化脚本,耗时高需求变动较快,自动化脚本维护成本高自动化脚本质量与QA个人经验和能力强相关覆盖场景有
2、限自动化脚本只覆盖核心场景特殊场景(第三方/模型依赖)覆盖难效率低排查自动化问题效率低,赋能RD效果差自研流量回放工具FlowCopy介绍02流量回放介绍简单来说,流量录制与回放是通过复制线上真实流量(录制),在测试环境进行模拟请求(回放)相对于传统自动化测试,流量回放技术可明显提高测试效率低成本无需人工编写自动化脚本使用工具录制回放流量,维护成本低覆盖场景全面使用真实流量,覆盖大部分场景定制筛选特殊流量,辅助人工测试效率高大量真实请求测试,快速定位问题广告业务测试中的流量录制回放需求现有流量回放工具是否能满足需求广告引擎流量录制回放需求:RPC协议支持流量的录制需要支持多种RPC协议,如Th
3、rift、Brpc等 明文流量录制多数RPC协议为二进制,需要录制为明文流量 C+语言支持尽量的多语言支持,必须能够录制C+相关应用现有流量回放工具介绍业务无侵入,因为intercept的存在,实时导流对线上影响小基本tcp协议栈的协议都可以支持,几乎是目前支持协议最多的流量回放工具基于ip层发送,流量更加真实支持分布式架构,可以当作压测工具使用优点:不足:部署难度大,需要同时部署tcpcopy和intercept,参数较复杂 录制和回放都是基于底层数据包,难以进行流量的筛选和定制安装部署简单、对业务应用无侵入,只占用机器带宽支持过滤和修改流量,可实时转发流量支持回放速率控制,可用于性能测试优
4、点:不足:开源版本只支持HTTP1.1及以下协议 无法解析二进制的数据交互协议,如Protobuf等不仅支持流量回放,还可以扩展到sandbox的其它能力通用的录制/回放能力,多协议支持强大的debug功能,支持内部调用链的追踪优点:不足:只适用于JAVA类应用 有一定上手难度,熟悉JAVA/JVM是否满足需求:是否满足需求:是否满足需求:不满足,不支持C+应用不满足,无法录制明文流量不满足,无法录制RPC协议流量回放的演进之路1.0基于应用层录制2.0基于网络协议栈录制流量回放1.0业务测试中需要明文流量,但现有工具无法支持RPC流量录制背景:1、人工在业务系统中插入代码并编译2、搭建测试环
5、境后,使用tcpcopy等工具在系统入口处回放流量实现方案:1、系统代码变更,需要同步修改编译,维护成本高2、侵入式保存流量,可能影响程序功能3、依赖真实测试环境配置,环境搭建成本高4、测试环境配置会影响流量保存的真实度存在问题流量回放2.0无侵入式保存HTTP/RPC明文脱敏流量,支持千级QPS流量保存/改写FlowCopy架构通过网络协议栈获取流量,无侵入使用epoll多路复用加多线程处理,高性能HTTP/RPC多协议支持,明文脱敏流量存储录制请求流量无需测试环境FlowCopy使用以GRPC接口录制为例:流量录制FLowcopy1、无需手动编译proto文件,运行指定方法名称即可2、无需
6、真实测试环境,以JSON格式存储protobuf请求数据3、支持转发到特定服务,获取相关返回流量1、启动flowcopy,机器ip为192.169.5.3-req_addr=192.162.1.2:8000-port=8000-timeout=1000-method_name=example.personSerivce/sendrequest-output_filename=./dump.json2、启动tcpcopy,目标ip为flowcopy机器iptcpcopy-x 8000-192.169.5.3:8000-s 192.168.5.4-c 192.168.1.x零代码编写、一键录制!参