月光宝盒平台分为2个部分,分别为moonbox-agent 和 moonbox-server
moonbox-agent
moonbox-server
流量录制的路径为【管理后台-流量录制】,此图描述了大致的流程。其中左侧为月光宝盒后台执行,右侧部分为目标JVM机器执行部分
流量回放的路径有两个:【管理后台-流量录制-录制任务-流量回放】和【流量回放-失败回放/重新回放】。
sandbox-agent和moonbo-agent的下载流程,和上一节 流量录制 部分相同
流量录制和回放任务启动时,会同时启动心跳线程,通过对此心跳线程 管理目标JVM上装载的 agent。当录制任务和回放任务执行完毕(或状态异常)时,agent上心跳线程调用sandbox-jetty容器接口,进行sandbox和moonbox的agent卸载操作,此过程不影响目标JVM正常功能
本图描述了Sandbox agent和Moonbox agent 启动的流程,包括 目标java进程attach操作,jetty服务启动和流量回放插件加载示意
录制和回放流程沿用 jvm-sandbox-repeater设计,舍弃了一些非主流程功能。
流量录制 核心逻辑录制协议基于JVM-Sandbox的BEFORE
、RETRUN
、THROW
事件机制进行录制流程控制,详见DefaultEventListener
流量回放 基于 FlowDispather 进行回放流量分发,每个类型回放插件实现RepeaterSPI完成回放请求发起;每次回放请求可决定本地回放是否mock,插件也自由实现mock逻辑,mock流程代码
mock回放:回放流量子调用(eg:mybatis/dubbo)不发生真实调用,从录制子调用中根据 MockStrategy 搜索匹配的子调用,利用JVM-Sandbox的流程干预能力,有匹配结果,进行
throwReturnImmediately
返回,没有匹配结果则抛出异常阻断流程,避免重复调用污染数据
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。