社区编辑申请
注册/登录
流量录制回放功能设计点归纳
开发 前端
本文对流量录制和回放常见的方案、用途以及设计原理做个归纳整理。测试用例不足或者遗漏难以覆盖所有场景,导致回归测试费时费力,线上稳定存在隐患,通过真实流量录制在回归测试时进行覆盖。

引言

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

一、解决的问题

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管控
  • 录制代理上报录制数据流量和监控信息
  • 控制台对流量录制管理 例如:数据完整性、录制任务状态和结果、录制时间、录制流量过滤
  • 控制台对流量回放管理 例如:回放结果状态、时长设定、回放速度等
  • 控制台与压测平台、回归测试平台的通信

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

 

责任编辑:武晓燕 来源: 瓜农老梁
相关推荐

2022-05-22 21:23:10

前端监控系统

2022-05-12 15:54:43

机器学习加密流量分析安全

2022-04-13 11:46:17

抓包wireshark丢包

2022-05-17 11:46:48

高并发服务数据库

2022-04-11 07:34:46

OAuth2UAA节点

2022-05-11 12:12:32

ScapyPython网络包

2022-04-30 08:33:31

微博开源云原生

2022-04-07 06:04:00

NetHogs开源网络工具

2022-04-25 10:34:19

云原生直播

2022-04-18 16:25:17

办公软件钉钉飞书

2022-04-26 06:04:11

零信任网络安全

2022-04-18 07:37:30

数据信息知识

2022-03-25 10:35:20

机器学习深度学习强化学习

2022-04-18 09:07:54

Linux网络延迟

2022-04-28 08:46:26

异步任务系统高并发

2022-04-02 14:43:59

Promethues监控

2022-03-14 10:12:22

架构网关技术

2022-03-21 09:50:45

私有云云计算

2022-03-31 20:20:46

大数据挑战解决方案

2022-03-31 10:42:04

端口转发Linux

同话题下的热门内容

让程序员心动的11种新编程语言Flutter vs ReactJS:2022年应该选哪个?再有人问你什么是分库分表,直接把这篇文章发给他前端配置化真香~上班又多了60%的摸鱼时间2022年值得使用的 Node.js 框架HTTP 的缓存为什么这么设计?如何加快Java中大型集合的处理前端监控的搭建步骤,别再一头雾水了!

编辑推荐

太厉害了,终于有人能把TCP/IP协议讲的明明白白了!牛人5次面试腾讯不成功的经验HBase原理–所有Region切分的细节都在这里了Javascript如何监听页面刷新和关闭事件如何搭建一个HTTPS服务端
我收藏的内容
点赞
收藏

51CTO技术栈公众号