深入学习jvm-sandbox(前言)

jvm-sandbox,用官方的说法是一种JVM的非侵入式运行期AOP解决方案,一种JVM沙箱容器技术。jvm-sandbox通过动态修改应用字节码在运行期改变应用的行为,配合其它一些工具可以构建出功能强大的测试工具平台。笔者通过一系列文章对jvm-sandbox做一番介绍,希望共同讨论、共同学习、共同进步。

jvm-sandbox是阿里巴巴开源的一款非侵入式运行期AOP解决方案,就像它的命名暗示的那样,它作用于JVM上,通过运行期的动态修改来达到某些研发任务(github传送门:https://github.com/alibaba/jvm-sandbox)。最早是由阿里巴巴徐冬晨开发,并在阿里巴巴集团得到推广应用。

基于java agent技术,jvm-sandbox可以在应用运行期通过命令加载预先编写的模块来达到修改应用行为的目的。因此它可以有如下应用场景:

1. 异常注入:通过挂载用户自己编写的模块,给目标应用注入特定的异常来检验系统的鲁棒性。配合线上运维的应急机制,可以进行故障演练,验证团队对于突发异常的监控、止血和修复能力。

2. 依赖梳理:A服务强依赖B服务,则当B服务宕机的时候,A服务必然无法工作;A服务弱依赖B服务,则当B服务宕机的时候,A服务会自动采取方案,比如使用默认值,或者读取缓存之类来保障业务正常运行。因此利用jvm-sandbox的动态修改能力,通过自动注入异常到被依赖服务调用中来判断应用的调用中是否存在未被评估出来的强依赖,提前做好应急预案。

3. 录制回放:截取应用的调用入参和出参(录制),然后重新利用录制下来的数据再次调用被测应用的接口(回放),可以做到利用线上的真是参数数据来回归验证代码修改是否存在回归问题。

4. 智能回归:根据录制的参数和执行链路,可以聚类分析同类测试用例,并且建立用例和覆盖代码的关系。在代码变更的回归中可以做到精准回放来回归。

5. 线上热修复:运行时改变线上应用行为,达到一些bug的热修复。因为jvm-sandbox可以运行期加载模块,因此无需停止服务就能对应用bug做修复。在一些紧急的止血场景中可以使用。

当然,只要脑洞够大,jvm-sandbox还可以有别的应用场景,在对java应用的功能性测试方面具有非常强大的功能。让我们一块开启jvm-sandbox的学习之旅吧。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值