阿里巴巴正式开源JVM-Sandbox
极客时间编辑部
讲述:杜力大小:1.37M时长:02:59
为了能够屏蔽字节码增强技术的高门槛,降低研发运维成本,同时又能支持上层多个工具平台功能的快速实现和动态管理,近日,阿里发布了一套实时无侵入的字节码增强框架 JVM-Sandbox,并将其开源。
JVM-Sandbox 由纯 Java 编码完成,基于 JVMTI 技术规范,为观察和改变代码运行结果提供了即插即用模块接口的容器,其提供的核心功能包括:
使用埋点技术提供统一的 API,来实现无需重启的 AOP 解决方案;
使用容器完成 JVM 类隔离,来解决侵入性问题;
提供容器管理机制,来完成各种容器的管理。
在 JVM-Sandbox 的世界观中,任何一个 Java 方法的调用都可以分解为 BEFORE、RETURN 和 THROWS 三个环节,由此在三个环节上引申出对应环节的事件探测和流程控制机制。不仅如此,还有 LINE 事件,可以完成代码行的记录。而基于这三个环节事件以及 LINE 事件,开发者可以完成很多类 AOP 的操作。
另外,JVM-Sandbox 有很多的应用场景,比如线上故障定位、线上系统流控、线上故障模拟、方法请求录制和结果回放、动态日志打印、安全信息监测和脱敏、行链路计算和覆盖率统计等。
目前,JVM-Sandbox 在阿里集团已经实现全网部署,在其上加载不同的模块实现了不同的功能,具体包括:
1. 线上故障演练
2017 年故障演练平台在 JVM-Sandbox 基础上仅耗时 1 周就完成故障注入部分的系统重构。重构后的系统在挂载效率和挂载成功率方面有了明显的提升,极大的缩短了故障演练的时间,演练效率提升了数十倍。目前这一功能已经覆盖淘宝、天猫等 16 个 BU,391 个应用。
2. 依赖检测
强弱依赖自动化检测平台提供了依赖检测、强弱分析、依赖扫描、故障注入等多种功能。开发者可以利用其模块容器的特性,将前人开发的模块与新增的模块一起挂载工作,完成平台功能。
3. 服务端录制隔离回放机制
线上录制隔离回放不仅极大的缩短了业务回归的耗时,把业务测试同学从繁琐的数据准备和接口自动化脚本的编写过程中解放出来,而且极大的拓展了覆盖范围,使回归的范围更贴近用户,且场景更为丰富。
4. 精准回归
由于线上录制的场景是海量的,如何识别重复场景,实现有效、精准的回放,就成为新的待解决问题。在 JVM-Sandbox 的基础上,阿里利用 LineEvnet 实现了行链路识别和标记,有效的提升了回放的精准度和效率。
总的来说,JVM-Sandbox 是一个纯 Java 编写的 AOP 解决方案。它为研发人员提供了一个快速实现字节码增强工具的平台。它的模块管理功能可以最大限度的复用模块、协同合作,减少重复投入。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论