3

流量录制回放功能设计点归纳

 2 years ago
source link: https://developer.51cto.com/art/202201/699324.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文对流量录制和回放常见的方案、用途以及设计原理做个归纳整理。

一、解决的问题

1.回归测试覆盖率

测试用例不足或者遗漏难以覆盖所有场景,导致回归测试费时费力,线上稳定存在隐患,通过真实流量录制在回归测试时进行覆盖。

  • 回归特定接口和链路
  • 回归特定业务场景
  • 全量回归特定业务线

2.与全链路压测闭环

解决全链路压测的数据准备问题,通过流量录制和回放系统与压测系统打通,形成从流量录制到压测闭环。

  • 定向录制某个链路接口线上流量
  • 对录制流量进行压测打标
  • 增压发起全链路压测

3.数据的其他用处

  • 抽取线上流量测试环境调试复现
  • 其他用到线上请求数据的地方

二、常用方案

流量录制的方案和采用技术各种各样,下面梳理两种常用的技术方案。

1.GoReplay

  1. https://github.com/buger/goreplay 

实现原理

依赖数据包捕获函数库(Packet Capture library)通过抓网络流量包,实现流量录制功能,go语言编写。

优点归纳

  • 支持流量录制
  • 支持流量回放
  • 支持流量过滤
  • 支持插件机制
  • 支持重写(URL、参数、Header等)
  • 支持录制限流
  • 抓包实现与服务语言无关

缺点归纳

  • 只支持HTTP,其他协议需要二次开发

2.jvm-sandbox-repeater

https://github.com/alibaba/jvm-sandbox-repeater

实现原理

实现Java Instrumentation接口编写Agent,通过jvm对外编程接口规范JVMTI,实现对jvm运行信息的获取以及执行程序的加载,java开发。

优点归纳

  • 流量录制和回放
  • 快速扩展插件机制
  • 已支持众多插件支持http/dubbo/mybatis/java/redis等

缺点归纳

  • 需要侵入运行服务的jvm
  • 依赖虚拟机

三、实现架构图

下图为基于上述两种方案的设计简图,通过运行一个录制代理ReplayAgent的方式实现。

功能点归纳

  • 录制代理ReplayAgent负责接收控制台指令对GoReplay或sandbox-repeater管控
  • 录制代理上报录制数据流量和监控信息
  • 控制台对流量录制管理 例如:数据完整性、录制任务状态和结果、录制时间、录制流量过滤
  • 控制台对流量回放管理 例如:回放结果状态、时长设定、回放速度等
  • 控制台与压测平台、回归测试平台的通信

本文转载自微信公众号「瓜农老梁」,可以通过以下二维码关注。转载本文请联系瓜农老梁公众号。

【编辑推荐】

【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK