介绍
jvm-sanbox是阿里出的基于 java.lang.instrument包做的一款工具
框架设计目标为:(摘自阿里云溪社区文章)
- 故障演练:在运行前,抛出异常或增加运行时间,即:干预方法的执行顺序和改变返回值;
- 强弱依赖梳理:系统运行时,实时记录系统的对外调用情况,即:感知方法的入参和返回值;
- 录制回放:运行时,记录方法的入参和返回值,回放时,不真实对外调用,而是直接返回录制时的返回值。即:感知方法入参和返回值,干预方法执行顺序,改变返回值;
- 精准回归:获取每个请求的行调用链路,根据行调用链路进行场景去重,根据代码改动的情况和行调用链路确定需要回归范围,即:运行时行链路感知。
使用手册
源码git地址:https://github.com/alibaba/jvm-sandbox
使用手册:源码中wiki很详细,不再赘述
jvmsandbox的前世今生:https://yq.aliyun.com/articles/707736
基本原理
- 无侵入式attach到jvm上
- 按照框架规则编写搜索要增强的类,框架会自动注入增强类/方法—偷天换日
- 在运行代码的过程中,新的请求运行增强后的类(被增强重新加载),这个增强后的类中由于框架增加了许多框架级别的代码,所以可以通知打印出各种