当前位置:网站首页>Jvm-Sandbox-Repeater的部署
Jvm-Sandbox-Repeater的部署
2022-07-04 21:57:00 【Wu_Candy】
1.什么是jvm-sandbox-repeater?
jvm-sandbox-repeater 是 JVM-Sandbox 生态体系下的重要模块,它具备了JVM-Sandbox 的所有特点,插件式设计便于快速适配各种中间件,封装请求录制/回放基础协议,也提供了通用可扩展的各种丰富API。jvm-sandbox 是指 JVM 沙箱容器,一种 JVM 的非侵入式运行期 AOP 解决方案。
2.它的核心能力是什么?
2.1 通用录制/回放能力
(1).无侵入式录制 HTTP/Java/Dubbo 入参/返回值录制能力(业务系统无感知)
(2).基于 TTL 提供多线程子调用追踪,完整追踪一次请求的调用路径
(3).入口请求(HTTP/Dubbo/Java)流量回放、子调用(Java/Dubbo)返回值 Mock 能力
2.2 快速可扩展API实现
(1).录制/回放插件式架构
(2).提供标准接口,可通过配置/简单编码实现一类通用插件
2.3. standalone工作模式
无需依赖任何服务端/存储,可以单机工作,提供录制/回放能力
3.如何部署?
3.1 Console部署
setp1: 下载源码
git clone https://github.com/alibaba/jvm-sandbox-repeater
step2: 配置数据库信息 application.properties 及初始化数据库相关的初始化 sql 文件地址为:
./jvm-sandbox-repeater/repeater-console/repeater-console-dal/src/main/resources/database.sql
step3: 在服务器上配置mvn命令
如果是配置好了yum 源,可以使用以下命令直接安装maven
yum install maven
step4: 编译并启动console命令
cd ./jvm-sandbox-repeater
mvn install -DskipTests && nohup java -jar repeater-console/repeater-console-start/target/repeater-console.jar > console.log 2>&1 &
3.2 Repeater部署
setp1: 在上面的源码下载目录下
cd ./jvm-sandbox-repeater/bin && sh install-local.sh
install-local.sh脚本内容如下:
[email protected] bin # more sh install-local.sh
#!/usr/bin/env bash
# repeater's target dir
REPEATER_TARGET_DIR=../target/repeater
# exit shell with err_code
# $1 : err_code
# $2 : err_msg
exit_on_err()
{
[[ ! -z "${2}" ]] && echo "${2}" 1>&2
exit ${1}
}
# package
sh ./package.sh || exit_on_err 1 "install failed cause package failed" #此处调用到了package.sh 脚本,下面会单独分析
# extract sandbox to ${HOME}
curl -s http://sandbox-ecological.oss-cn-hangzhou.aliyuncs.com/sandbox-1.2.1-bin.tar | tar xz -C ${HOME} || exit_on_err 1 "extract sandbox failed" #下载并解压sandbox文件包
# copy module to ~/.sandbox-module
mkdir -p ${HOME}/.sandbox-module || exit_on_err 1 "permission denied, can not mkdir ~/.sandbox-module" #创建目录
cp -r ${REPEATER_TARGET_DIR}/* ${HOME}/.sandbox-module || exit_on_err 1 "permission denied, can not copy module to ~/.sandbox-module" #复制../target/repeater目录下的所有文件到上一个命令创建的目录下
package.sh脚本内容如下:
[email protected] bin # more package.sh
#!/usr/bin/env bash
# repeater's target dir
REPEATER_TARGET_DIR=../target/repeater #定义变量
# exit shell with err_code
# $1 : err_code
# $2 : err_msg
exit_on_err()
{
[[ ! -z "${2}" ]] && echo "${2}" 1>&2
exit ${1}
}
# maven package the sandbox
mvn clean package -Dmaven.test.skip=true -f ../pom.xml || exit_on_err 1 "package repeater failed." #编译打包
mkdir -p ${REPEATER_TARGET_DIR}/plugins #创建目录
mkdir -p ${REPEATER_TARGET_DIR}/cfg #创建目录
cp ./repeater-logback.xml ${REPEATER_TARGET_DIR}/cfg/repeater-logback.xml \ #拷贝文件到repeater目录
&& cp ./repeater.properties ${REPEATER_TARGET_DIR}/cfg/repeater.properties \
&& cp ./repeater-config.json ${REPEATER_TARGET_DIR}/cfg/repeater-config.json \
&& cp ../repeater-module/target/repeater-module-*-jar-with-dependencies.jar ${REPEATER_TARGET_DIR}/repeater-module.jar \
&& cp ../repeater-console/repeater-console-start/target/repeater-console.jar ${REPEATER_TARGET_DIR}/repeater-bootstrap.jar \
&& cp ../repeater-plugins/ibatis-plugin/target/ibatis-plugin-*-jar-with-dependencies.jar ${REPEATER_TARGET_DIR}/plugins/ibatis-plugin.jar \
&& cp ../repeater-plugins/java-plugin/target/java-plugin-*-jar-with-dependencies.jar ${REPEATER_TARGET_DIR}/plugins/java-plugin.jar \
&& cp ../repeater-plugins/mybatis-plugin/target/mybatis-plugin-*-jar-with-dependencies.jar ${REPEATER_TARGET_DIR}/plugins/mybatis-plugin.jar \
&& cp ../repeater-plugins/dubbo-plugin/target/dubbo-plugin-*-jar-with-dependencies.jar ${REPEATER_TARGET_DIR}/plugins/dubbo-plugin.jar \
&& cp ../repeater-plugins/redis-plugin/target/redis-plugin-*-jar-with-dependencies.jar ${REPEATER_TARGET_DIR}/plugins/redis-plugin.jar \
&& cp ../repeater-plugins/http-plugin/target/http-plugin-*-jar-with-dependencies.jar ${REPEATER_TARGET_DIR}/plugins/http-plugin.jar \
&& cp ../repeater-plugins/hibernate-plugin/target/hibernate-plugin-*-jar-with-dependencies.jar ${REPEATER_TARGET_DIR}/plugins/hibernate-plugin.jar \
&& cp ../repeater-plugins/spring-data-jpa-plugin/target/spring-data-jpa-plugin-*-jar-with-dependencies.jar ${REPEATER_TARGET_DIR}/plugins/spring-data-jpa-plugin.jar
repeater 日志配置文件如下:
repeater的日志路径为:~/logs/sandbox/repeater/repeater.log --》这是由于logback.xml 配置决定的 repeater-logback.xml文件内容如下:
[email protected] bin #more repeater-logback.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="10000">
<appender name="REPEATER-FILE-APPENDER" class="ch.qos.logback.core.rolling.Ro
llingFileAppender">
<file>${user.home}/logs/sandbox/repeater/repeater.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${user.home}/logs/sandbox/repeater/repeater.log.%d{y
yyy-MM-dd}</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<root level="info">
<appender-ref ref="REPEATER-FILE-APPENDER"/>
</root>
</configuration>
3.3 Sandbox 部署
https://github.com/alibaba/jvm-sandbox
- JVM-SANDBOX(沙箱)实现了一种在不重启、不侵入目标JVM应用的AOP解决方案
- 操作步骤:下载最新版本的JVM-SANDBOX
wget http://ompc.oss-cn-hangzhou.aliyuncs.com/jvm-sandbox/release/sandbox-stable-bin.zip
# 解压
unzip sandbox-stable-bin.zip
# 进入沙箱执行脚本
cd sandbox/bin
#在~/sandbox/bin/sandbox.sh 启动的cfg目录下有一个sandbox.properties文件,目录为/root/sandbox/cfg
sandbox.properties 文件里面指定了user_module=~/.sandbox-module
# 挂载目标JVM进程,这里以console应用为示例来挂载,一条命令搞定:
sh ~/sandbox/bin/sandbox.sh -p `ps -ef | grep "console" | grep -v grep | awk '{print $2}'` -P 12250 【这个命令会将console JVM进程进行挂载】
~/.sandbox-module目录下可以看到:
[email protected] .sandbox-module # tree
.
├── cfg
│ ├── repeater-config.json
│ ├── repeater-logback.xml #这个repeater 启动后的日志配置文件
│ └── repeater.properties #把repeater.properties里面的ip and port 修改为为console 所在机器启动的ip and port
├── plugins
│ ├── dubbo-plugin.jar
│ ├── hibernate-plugin.jar
│ ├── http-plugin.jar
│ ├── ibatis-plugin.jar
│ ├── java-plugin.jar
│ ├── mybatis-plugin.jar
│ ├── redis-plugin.jar
│ └── spring-data-jpa-plugin.jar
├── repeater-bootstrap.jar
└── repeater-module.jar #repeater 模块的启动jar
Sandbox 日志配置:
#more sandbox-logback.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="10000">
<appender name="SANDBOX-FILE-APPENDER" class="ch.qos.logback.core.rolling.Rol
lingFileAppender">
<file>${user.home}/logs/sandbox/sandbox.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<FileNamePattern>${user.home}/logs/sandbox/sandbox.log.%d{yyyy-MM-dd}
</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %SANDBOX_NAMESPACE %-5level %msg%n</
pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<root level="info">
<appender-ref ref="SANDBOX-FILE-APPENDER"/>
</root>
</configuration>
4.Console部署后的启动页面如下图所示
end
边栏推荐
猜你喜欢

达梦数据凭什么被称为国产数据库“第一股”?

The use of complex numbers in number theory and geometry - Cao Zexian

玩转gRPC—深入概念与原理
![[optimtool.unconstrained] unconstrained optimization toolbox](/img/ef/65379499df205c068ee9bc9df797ac.png)
[optimtool.unconstrained] unconstrained optimization toolbox

【C语言进阶篇】数组&&指针&&数组笔试题

Bookmark

MongoDB聚合操作总结

QT - double buffer plot

What is business intelligence (BI), just look at this article is enough

AscendEX 上线 Walken (WLKN) - 一款卓越领先的“Walk-to-Earn”游戏
随机推荐
卷积神经网络模型之——LeNet网络结构与代码实现
What is business intelligence (BI), just look at this article is enough
vim 从嫌弃到依赖(23)——最后的闲扯
Éducation à la transmission du savoir | Comment passer à un test logiciel pour l'un des postes les mieux rémunérés sur Internet? (joindre la Feuille de route pour l'apprentissage des tests logiciels)
傳智教育|如何轉行互聯網高薪崗比特之一的軟件測試?(附軟件測試學習路線圖)
【愚公系列】2022年7月 Go教学课程 003-IDE的安装和基本使用
ACM Multimedia 2022 | 视觉语言预训练模型中社会偏见的反事实衡量和消除
Locust性能测试 —— 环境搭建及使用
Solana链上应用Crema因黑客攻击停运
GTEST from ignorance to proficiency (3) what are test suite and test case
From repvgg to mobileone, including mobileone code
Interview question 01.01 Determine whether the character is unique
Why should garment enterprises talk about informatization?
如何实现轻松管理1500万员工?
阿里推出新品牌“瓴羊”,致力成为“数字化领头羊”
VIM from dislike to dependence (23) -- the last gossip
TLA+ 入门教程(1):形式化方法简介
Spatiotemporal prediction 3-graph transformer
短视频系统源码,点击屏幕空白处键盘不自动收起
el-tree结合el-table,树形添加修改操作