sandbox-repeater源码

下载源码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

image
image.gif

未完待续......

你可能感兴趣的:(sandbox-repeater源码)