流量回放框架 jvm-sandbox-repeater 实践「部署-1」

公司准备最近开始对流量回放开始普及,以应对复杂业务场景的回归线上bug,线下复现不了等问题,所以团队大佬准备使用 jvm-sandbox-rep

一. 前言

公司准备最近开始对流量回放开始普及,以应对复杂业务场景的回归线上bug,线下复现不了等问题,所以团队大佬准备使用 jvm-sandbox-repeater这一款简单易用、安全可靠的流量录制回放工具,来应对上问题、

二. jvm-sandbox-repeater简介

定义:

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

应用场景:

1. 业务快速回归

基于线上流量的录制/回放,无需人肉准备自动化测试脚本、准备测试数据

2. 线上问题排查

录制回放提供”昨日重现”能力,还原线上真实场景到线下做问题排查和Debug

动态方法入参/返回值录制,提供线上快速问题定位

3. 压测流量准备

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

4. 实时业务监控

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

repeater-console

官方的说明

jvm-sandbox-repeater 仅仅提供了录制回放的能力,如果需要完成业务回归、实时监控、压测等平台,后面须要有一个数据中心负责采集数据的加工、存储、搜索,repeater-console 提供了简单的demo示例;

一个模块管理平台负责管理JVM-Sandbox各模块生命周期;一个配置管理平台负责维护和推送jvm-sandbox-repeater采集所须要的各种配置变更注意:目前项目代码默认启动standalone模式,不需要依赖任何服务端和存储,能够简单快速的实现单机的录制回放,

流量回放框架 jvm-sandbox-repeater 实践「部署-1」

控制单机模式的开关在~/.sandbox-module/cfg/repeater.properties 文件中的 repeat.standalone.mode=true //开启或关闭单机工作模式,

流量回放框架 jvm-sandbox-repeater 实践「部署-1」

这个按需修改,每个人的服务器地址都不一样

关闭单机模式后,配置拉取/消息投递等都依赖repeater.properties中配置的具体url;如不想通过http拉取和消息投递的也可以自己实现Broadcaster和ConfigManager

流量回放框架 jvm-sandbox-repeater 实践「部署-1」

引入csdn大佬的图

安装过程:(橙色标注部分)

第1步:用户先启动repeater-console服务,通过console提供的配置界面录制应用名、环境和录制接口

第2,3步:用户携带第一步总配置好的应用名和环境参数启动被监测应用,启动过程中repeater会注入到被监测服务中

第4步:启动中通过项目中的bin/repeater.properties配置信息,进行拉去第1步的配置信息进行心跳上报(即:把被监测服务记录到repeater-console中),为后面录制回放做环境准备,同时也方便用户可视画管理。

ps:第4步中的bin/repeater.properties配置地址配置的是repeater-console的部署地址(即指代的第5步)

录制过程:(浅绿色标注部分)

第7步:用户请求到service

第8步:sandbox感知到请求

第9步:sandbox将感知到的请求通知repeater。

第10步:repeater对事件进行给过滤和采样计算,对满足录制条件的请求会记录请求、响应、子调用和响应,序列化成后通知repeater-console

第11步: repeater-console对序列化结果进行处理和保存

回放过程:(浅蓝色标注部分)

第12步: 用户请求repeater-console的回放接口,明确需要回放哪条录制数据

第13步: repeater-console通过调用repeater提供的回放任务接收接口下发回放任务

第14步: repeater在执行回放任务的过程中,会反序列化记录的wrapperRecord,根据信息构造相同的请求,对被挂载的任务进行请求并跟踪回放请求的处理流程,以便记录回放结果以及执行mock动作

第15步: 回放结束,repeater会将回放信息和结果序列化后通知repeater-console进行处理和保存

安装

流量回放框架 jvm-sandbox-repeater 实践「部署-1」

工程结构

安装sandbox和repeater

环境:

  • linux/Mac os
  • jdk 1.8+
  • maven 3.2+
  • 数据库 mysql 5.7+(repeater-console 可能用到)

# 克隆代码到本地

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

流量回放框架 jvm-sandbox-repeater 实践「部署-1」

初始化sql ,并根据初始化后的数据库,在下面文件中修改

流量回放框架 jvm-sandbox-repeater 实践「部署-1」

调整 standalone配置信息,开启或关闭单机工作模式

流量回放框架 jvm-sandbox-repeater 实践「部署-1」

修改日志存放脚本 脚本位置:jvm-sandbox-repeater/bin/repeater-logback.xml

流量回放框架 jvm-sandbox-repeater 实践「部署-1」

修改install-local.sh安装脚本,定义自己的home

流量回放框架 jvm-sandbox-repeater 实践「部署-1」

进入~/xxx/jvm-sandbox-repeater/目录下,执行install-local.sh安装脚本

安装ok后 修改install-repeater.sh安装脚本

流量回放框架 jvm-sandbox-repeater 实践「部署-1」

启动篇

# 在 repeater 项目根目录进行

mvn install -DskipTests && java -jar repeater-console/repeater-console-start/target/*.jar

二次启动可以在 target 目录 使用java -jar repeater-bootstrap.jar

流量回放框架 jvm-sandbox-repeater 实践「部署-1」

2、验证repeater-console启动成功

http://url:8001/online/search.htm

流量回放框架 jvm-sandbox-repeater 实践「部署-1」

repeater以agent模式注入到被测应用并进行录制回放

现在,借助界面来做一次录制回放吧

1)、在 console 增加配置,用于对接应用
2)、让 repeater 注入到被测应用,上报数据到 console
3)、在 console 中操作,进行录制和回放

在 console 增加配置,用于对接应用 ,其实 greeting 为启动项目的接口

流量回放框架 jvm-sandbox-repeater 实践「部署-1」

repeater 注入被监测应用程序(采用agent模式)

1)agent模式启动与关闭

agent 模式下的启停都跟随应用,配置好参数后,应用启动则启动,应用停止则停止。

注意事项:

  • 1) sandbox-agent.jar :自己安装的位置进行配置
  • 2)录制应用名、录制环境 :与console配置管理中的一致
  • 3)repeater启动端口 :未在进程中使用过的
  • 4)application.jar:被测应用

java

-javaagent:${HOME}/sandbox/lib/sandbox-agent.jar=server.port=${repeater启动端口}\;server.ip=0.0.0.0 \

-Dapp.name=${录制应用名} \

-Dapp.env=${录制环境} \

-jar application.jar

demo:

java -javaagent:/usr/local/zc-sandbox/sandbox/lib/sandbox-agent.jar=server.port=12580\;server.ip=0.0.0.0 -Dapp.name=repeater -Dapp.env=daily -jar /usr/local/gs-rest-service-master/complete/target/gs-rest-service-0.1.0.jar

流量回放框架 jvm-sandbox-repeater 实践「部署-1」

启动成功

流量回放框架 jvm-sandbox-repeater 实践「部署-1」

进入 console 的【在线模块】,应该能看到增加了当前这个被测应用的心跳记录:

看日志,日志路径~/logs/sandbox/repeater/repeater.log。

开始录制,给这个被测应用输送一些流量

get请求接口

流量回放框架 jvm-sandbox-repeater 实践「部署-1」

点击console 的【在线流量】,能看到刚发出的两条请求已经录制下来了

流量回放框架 jvm-sandbox-repeater 实践「部署-1」

回放请求。直接点击第一行末尾的回放按钮,进行回放:

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/82644.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信