下载源码jvm-sandbox-repeater/user-guide-cn.md at master · alibaba/jvm-sandbox-repeater · GitHub
-
通过阅读说明了解功能
提供流量录制回放功能
其中repeater-console是流量管理系统的简单实现
-
明确目标
熟悉整个实现机制
针对支持服务,做相应录制回放系统改造|开发
针对不支持的协议|组件,能进行开发支持
-
按照说明初步使用
本地模式
将bin/repeater.properties配置中repeat.standalone.mode设置为true
执行bin/bootstrap.sh 部署并启动
-
明确阅读目的
了解本地模式的实现
-
了解各模块的功能
bin 部署/启动命令目录
hessian-lite hessian协议轻量级版本
repeater-aide(助手)各种工具类
repeater-client spring容器改造类
repeater-console 录制回放平台
repeater-console-common 公共类定义
repeater-console-dal 数据库操作
repeater-console-service 逻辑层
repeater-console-start 服务入口
repeater-module sandbox模块实现
repeater-plugin-api 公共model和api
repeater-plugin-core 核心实现逻辑
repeater-plugin-plugins repeater支持的协议|组件
-
了解模块间的依赖关系
repeater-console-start 流量录制回放系统入口程序 - repeater-client - repeater-console-service - - repeater-console-dal - - - repeater-console-common - - - - repeater-plugin-api - - - - - sandbox-api - - - - - - sandbox-common-api - - repeater-plugin-core - - - sandbox-api - - - repeater-plugin-api - - - - sandbox-api - - - - repeater-aide - - - hessian-lite - - - - repeater-aide repeater-module 基于jvm-sandbox的扩展module实现 - repeater-plugin-core - sandbox-api - 运行时加载plugins下的插件
通过梳理可见,repeater-console-start 和repeater-module是主要的入口模块|启动程序
其中了解repeater-module需要先了解jvm-sandbox的应用和原理
-
Jvm-sandbox https://github.com/alibaba/jvm-sandbox/wiki
核心api:
执行事件 模块生命周期
-
细读源码了解具体实现
repeater-module
-
RepeaterModule
实现了sandbox接口Module,ModuleLifecycle,onload 方法初始化日志框架,agent方式运行会通过spring激活bean。
-
-
onLoad
如果是agent方式启动sandbox,则记录spring加载的bean
-
-
loadCompleted
broadcaster:消息广播服务;用于采集流量之后的消息分发,比如本地模式将录制和回放的结果写入文件
invocationListener:把broadcaster包装成监听器
ClassloaderBridge:构建了一个类加载器桥接器
initialize:初始化
heartbeatHandler:服务探活
-
-
initialize
装载录制协议插件,录制流量
装载回放器,回放流量
装载消息订阅器
将线程包装成ttl
-
未完待续......