如何入门使用jvm-sandbox-repeater进行流量录制回放工具的服务部署?

2026-05-06 04:401阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1700个文字,预计阅读时间需要7分钟。

如何入门使用jvm-sandbox-repeater进行流量录制回放工具的服务部署?

趋于当前技术不断更新、产品功能多元化和流量回弹热度攀升的背景下,测试团队也提出采用阿里的开源流量回弹工具——jvm-sandbox-repeater。我个人先尝试了一番,效果还不错。

趋于当前技术不断更新、产品功能多元化之下,流量回放的热度也是越来越高。

在前一段时间,测试团队也提到阿里开源的流量回放工具 jvm-sandbox-repeater

我个人就先尝试一下,期间还是遇到一些问题,通过咨询和度娘的帮助下,整体功能的使用流程是跑通了。

jvm-sandbox-repeater简介

在聊之前,我们先来了解下jvm-sandbox-repeater,其实在官网上也有详细的介绍,这里就直接搬官网的吧

jvm-sandbox-repeater是JVM-Sandbox生态体系下的重要模块,它具备了JVM-Sandbox的所有特点,插件式设计便于快速适配各种中间件,封装请求录制/回放基础协议,也提供了通用可扩展的各种丰富API。

目标人群
  • 线上有个用户请求一直不成功,我想在测试环境Debug一下,能帮我复现一下吗?

  • 压测流量不知道怎么构造,数据结构太复杂,压测模型也难以评估,有什么好的办法吗?

  • 不想写接口测试脚本了,我想做一个流量录制系统,把线上用户场景做业务回归,可能会接入很多服务系统,不想让每个系统都进行改造,有好的框架选择吗?

  • 我想做一个业务监控系统,对线上核心接口采样之后做一些业务校验,实时监控业务正确性。

如果你有以上的想法或需求,jvm-sandbox-repeater 都将是你的不二选择方案;框架基于JVM-Sandbox,拥有JVM-Sandbox的一切特性,同时封装了以下能力:

  • 录制/回放基础协议,可快速配置/编码实现一类中间件的录制/回放
  • 开放数据上报,对于录制结果可上报到自己的服务端,进行监控、回归、问题排查等上层平台搭建
repeater的核心能力
  • 通用录制/回放能力
    无侵入式录制HTTP/Java/Dubbo入参/返回值录制能力(业务系统无感知)
    基于TTL提供多线程子调用追踪,完整追踪一次请求的调用路径
    入口请求(HTTP/Dubbo/Java)流量回放、子调用(Java/Dubbo)返回值Mock能力

  • 快速可扩展API实现
    录制/回放插件式架构
    提供标准接口,可通过配置/简单编码实现一类通用插件

  • standalone工作模式
    无需依赖任何服务端/存储,可以单机工作,提供录制/回放能力

repeater的应用场景
  • 业务快速回归
    基于线上流量的录制/回放,无需人肉准备自动化测试脚本、准备测试数据

  • 线上问题排查
    录制回放提供"昨日重现"能力,还原线上真实场景到线下做问题排查和Debug
    动态方法入参/返回值录制,提供线上快速问题定位

  • 压测流量准备
    0成本录制HTTP/Dubbo等入口流量,作为压测流量模型进行压测

  • 实时业务监控
    动态业务监控,基于核心接口数据录制回流到平台,对接口返回数据正确性进行校验和监控

jvm-sandbox-repeater服务部署 环境准备

建议在Linux环境下使用,windows下可能会出现路径不一致的情况,我使用的环境如下:

  • Linux
  • JDK 1.8
  • Maven 3.2
  • Mysql 5.7

如果只是想简单体验下,则用不到Mysql,可以参考官网的用户手册

安装repeater 克隆源码

git clone github.com/alibaba/jvm-sandbox-repeater.git

安装repeater

进入到jvm-sandbox-repeater项目bin目录下,执行命令./install-repeater.sh

界面展示如下所示,则说明安装成功

修改repeater配置

路径为:~/.sandbox-module/cfg/repeater.properties

主要修改2个值

  • repeat.standalone.mode,修改为false

# 是否开启脱机工作模式 repeat.standalone.mode=false

  • url主机地址和端口,这个按需修改,每个人的服务器地址都不一样

# 录制消息投递地址 broadcaster.record.url=127.0.0.1:8001/facade/api/record/save # 回放结果投递地址 broadcaster.repeat.url=127.0.0.1:8001/facade/api/repeat/save # 回放消息取数据地址 repeat.record.url=127.0.0.1:8001/facade/api/record/%s/%s # 配置文件拉取地址 repeat.config.url=127.0.0.1:8001/facade/api/config/%s/%s

说到这里,可能会疑问,为什么要修改这2个配置?原因如下:

repeat.standalone.mode控制 repeater 是否以 standalone 模式启动,我们要与 repeater-console 结合使用,所以配置为false

其他 url 都是与 repeater-console 交互的 url,所以需要将 host 改为本地启动的 repeater-console 的地址

修改console配置

console配置路径:/jvm-sandbox-repeater/repeater-console/repeater-console-start/src/main/resources/

# 使用本地数据源进行测试 console.use.localCache =false # 示例回放地址(工程使用需要维护repeater插件的ip:port替换,指定ip发起回放) repeat.repeat.url=%s:%s/sandbox/default/module/%s:%s/sandbox/default/module/%s:%s/sandbox/default/module/ip:端口/regress/index.htm,访问页面,进入到如下测试页面,说明通过url访问也ok,服务没有问题

该页面总共三个菜单:在线流量、配置管理、在线模块

先简单讲下,在线流量就是录制的请求,配置管理就是针对要录制的应用配置,在线模块就是sandbox的心跳。后续文章会继续讲到,今天先简单描述下。

问题 ./install-repeater.sh执行失败

执行命令,出现如下报错

解决办法:

通过命令 vim install-repeater.sh 将 tar xz 中的 z 删除即可,因为该压缩包没有用gzip格式压缩,所以不用加z参数

启动repeater项目空指针

启动repeater项目提示空指针,报错如下所示:

如何入门使用jvm-sandbox-repeater进行流量录制回放工具的服务部署?

解决办法:

module_config、module_info表中的appname和environment不一致,修改为一致即可

以上就是今天分享的内容,下期再会。

本文共计1700个文字,预计阅读时间需要7分钟。

如何入门使用jvm-sandbox-repeater进行流量录制回放工具的服务部署?

趋于当前技术不断更新、产品功能多元化和流量回弹热度攀升的背景下,测试团队也提出采用阿里的开源流量回弹工具——jvm-sandbox-repeater。我个人先尝试了一番,效果还不错。

趋于当前技术不断更新、产品功能多元化之下,流量回放的热度也是越来越高。

在前一段时间,测试团队也提到阿里开源的流量回放工具 jvm-sandbox-repeater

我个人就先尝试一下,期间还是遇到一些问题,通过咨询和度娘的帮助下,整体功能的使用流程是跑通了。

jvm-sandbox-repeater简介

在聊之前,我们先来了解下jvm-sandbox-repeater,其实在官网上也有详细的介绍,这里就直接搬官网的吧

jvm-sandbox-repeater是JVM-Sandbox生态体系下的重要模块,它具备了JVM-Sandbox的所有特点,插件式设计便于快速适配各种中间件,封装请求录制/回放基础协议,也提供了通用可扩展的各种丰富API。

目标人群
  • 线上有个用户请求一直不成功,我想在测试环境Debug一下,能帮我复现一下吗?

  • 压测流量不知道怎么构造,数据结构太复杂,压测模型也难以评估,有什么好的办法吗?

  • 不想写接口测试脚本了,我想做一个流量录制系统,把线上用户场景做业务回归,可能会接入很多服务系统,不想让每个系统都进行改造,有好的框架选择吗?

  • 我想做一个业务监控系统,对线上核心接口采样之后做一些业务校验,实时监控业务正确性。

如果你有以上的想法或需求,jvm-sandbox-repeater 都将是你的不二选择方案;框架基于JVM-Sandbox,拥有JVM-Sandbox的一切特性,同时封装了以下能力:

  • 录制/回放基础协议,可快速配置/编码实现一类中间件的录制/回放
  • 开放数据上报,对于录制结果可上报到自己的服务端,进行监控、回归、问题排查等上层平台搭建
repeater的核心能力
  • 通用录制/回放能力
    无侵入式录制HTTP/Java/Dubbo入参/返回值录制能力(业务系统无感知)
    基于TTL提供多线程子调用追踪,完整追踪一次请求的调用路径
    入口请求(HTTP/Dubbo/Java)流量回放、子调用(Java/Dubbo)返回值Mock能力

  • 快速可扩展API实现
    录制/回放插件式架构
    提供标准接口,可通过配置/简单编码实现一类通用插件

  • standalone工作模式
    无需依赖任何服务端/存储,可以单机工作,提供录制/回放能力

repeater的应用场景
  • 业务快速回归
    基于线上流量的录制/回放,无需人肉准备自动化测试脚本、准备测试数据

  • 线上问题排查
    录制回放提供"昨日重现"能力,还原线上真实场景到线下做问题排查和Debug
    动态方法入参/返回值录制,提供线上快速问题定位

  • 压测流量准备
    0成本录制HTTP/Dubbo等入口流量,作为压测流量模型进行压测

  • 实时业务监控
    动态业务监控,基于核心接口数据录制回流到平台,对接口返回数据正确性进行校验和监控

jvm-sandbox-repeater服务部署 环境准备

建议在Linux环境下使用,windows下可能会出现路径不一致的情况,我使用的环境如下:

  • Linux
  • JDK 1.8
  • Maven 3.2
  • Mysql 5.7

如果只是想简单体验下,则用不到Mysql,可以参考官网的用户手册

安装repeater 克隆源码

git clone github.com/alibaba/jvm-sandbox-repeater.git

安装repeater

进入到jvm-sandbox-repeater项目bin目录下,执行命令./install-repeater.sh

界面展示如下所示,则说明安装成功

修改repeater配置

路径为:~/.sandbox-module/cfg/repeater.properties

主要修改2个值

  • repeat.standalone.mode,修改为false

# 是否开启脱机工作模式 repeat.standalone.mode=false

  • url主机地址和端口,这个按需修改,每个人的服务器地址都不一样

# 录制消息投递地址 broadcaster.record.url=127.0.0.1:8001/facade/api/record/save # 回放结果投递地址 broadcaster.repeat.url=127.0.0.1:8001/facade/api/repeat/save # 回放消息取数据地址 repeat.record.url=127.0.0.1:8001/facade/api/record/%s/%s # 配置文件拉取地址 repeat.config.url=127.0.0.1:8001/facade/api/config/%s/%s

说到这里,可能会疑问,为什么要修改这2个配置?原因如下:

repeat.standalone.mode控制 repeater 是否以 standalone 模式启动,我们要与 repeater-console 结合使用,所以配置为false

其他 url 都是与 repeater-console 交互的 url,所以需要将 host 改为本地启动的 repeater-console 的地址

修改console配置

console配置路径:/jvm-sandbox-repeater/repeater-console/repeater-console-start/src/main/resources/

# 使用本地数据源进行测试 console.use.localCache =false # 示例回放地址(工程使用需要维护repeater插件的ip:port替换,指定ip发起回放) repeat.repeat.url=%s:%s/sandbox/default/module/%s:%s/sandbox/default/module/%s:%s/sandbox/default/module/ip:端口/regress/index.htm,访问页面,进入到如下测试页面,说明通过url访问也ok,服务没有问题

该页面总共三个菜单:在线流量、配置管理、在线模块

先简单讲下,在线流量就是录制的请求,配置管理就是针对要录制的应用配置,在线模块就是sandbox的心跳。后续文章会继续讲到,今天先简单描述下。

问题 ./install-repeater.sh执行失败

执行命令,出现如下报错

解决办法:

通过命令 vim install-repeater.sh 将 tar xz 中的 z 删除即可,因为该压缩包没有用gzip格式压缩,所以不用加z参数

启动repeater项目空指针

启动repeater项目提示空指针,报错如下所示:

如何入门使用jvm-sandbox-repeater进行流量录制回放工具的服务部署?

解决办法:

module_config、module_info表中的appname和environment不一致,修改为一致即可

以上就是今天分享的内容,下期再会。