|
|
51CTO旗下网站
|
|
移动端

阿里巴巴徐冬晨:JVM-Sandbox会让你脑洞大开

七年一剑,华丽蜕变。自2012年起连续6年15场峰会,凝聚大量技术专家,博观而约取,厚积而薄发。2018WOT全球软件与运维技术峰会扬帆起航,围绕12大核心热点,汇聚海内外60位一线专家,打造高端技术盛宴!

作者:刘妮娜来源:51CTO|2018-03-16 16:28

【51CTO.com原创稿件】七年一剑,华丽蜕变。自2012年起连续6年15场峰会,凝聚大量技术专家,博观而约取,厚积而薄发。2018WOT全球软件与运维技术峰会扬帆起航,围绕12大核心热点,汇聚海内外60位一线专家,打造高端技术盛宴!在5月18-19日的2018WOT全球软件与运维技术峰会上,来自阿里巴巴的测试开发专家徐冬晨女士将为我们带来题为《JVM-sandbox稳定性体系的构建》的主题演讲。

日前,徐冬晨接受了51CTO的采访,抢先与大家分享在构建JVM-sandbox过程中的酸甜苦辣。连续参与6年天猫双十一的她,在服务端稳定性方面,经验丰富、见解独到。

阿里巴巴测试开发专家徐冬晨

建模历时一年困难重重

JVM-SANDBOX从有想法到最终成型,大概经历了一年的时间。在2016年中,天猫双十一催动了阿里内部大量业务系统的改动,恰逢徐冬晨所在的团队调整,测试资源保障严重不足,迫使他们必须考虑更精准、更便捷的老业务测试回归验证方案。开发团队面临的是新接手的老系统,提出测试方案不允许业务代码架构以满足可测性的特殊要求,也迫使很多现有测试框架无法应用到现有业务系统架构中。更精准、更便捷、更无感的需求,需要新的测试思路和测试框架,所以也推动了徐冬晨历时一年,苦心研发出JVM-SANDBOX。

研发的过程中最大的挑战是考虑和适配现有不同架构的业务系统,一开始徐冬晨打算采用SpringAOP的方式来完成相对业务代码透明的AOP织入方式,但很快发现并不是所有业务代码都托管在Spring容器中,而且更底层的中间件代码、三方包代码无法纳入到回归范围。更糟糕的是测试框架会引入自身所依赖的类库,经常与业务代码的类库产生冲突。

最终,她跳出原有思路,撇开SpringAOP,在更底层的JVMTI来完成这套AOP逻辑的实现,破坏了双亲委派原则来实现类的隔离策略。在这一层实现AOP,尤其是attach的启动模式,对现有的AOP字节码编织方案都做了限制,JDKProxy、CgLib等常见的AOP实现框架都无法满足需求,所以我们用ASM构造了一套精巧的字节码编织策略。

JVM-Sandbox能为我们做什么

在JVM-Sandbox的世界观中,任何一个Java方法的调用都可以分解为BEFORE、RETURN和THROWS三个环节,由此在三个环节上引申出对应环节的事件探测和流程控制机制。不仅如此还有LINE事件,可以完成代码行的记录。基于BEFORE、RETURN和THROWS三个环节事件以及LINE事件,可以完成很多类AOP的操作。

例如,它可以感知和改变方法调用的入参、可以感知和改变方法调用返回值和抛出的异常、可以感知一个请求按顺序执行了哪些行、可以改变方法执行的流程等。

在方法体执行之前直接返回自定义结果对象,原有方法代码将不会被执行;在方法体返回之前重新构造新的结果对象,甚至可以改变为抛出异常;在方法体抛出异常之后重新抛出新的异常,甚至可以改变为正常返回。

谈及JVM-Sandbox的应用场景时,徐冬晨如是说,JVM沙箱还能帮助你做很多很多,取决于你的脑洞有多大了。它的应用场景例如:线上故障定位、线上系统流控、线上故障模拟、方法请求录制和结果回放、动态日志打印、安全信息监测和脱敏、行链路计算和覆盖率统计等。

JVM-Sandbox为阿里提速增效

使用了徐冬晨的JVM-Sandbox之后,阿里业务在很多方面有所提升:例如故障演练方面,2017年故障演练平台在JVM-Sandbox基础上仅耗时1周即完成故障注入部分的系统重构。重构后的系统在挂载效率和挂载成功率方面有了明显的提升,极大的缩短的故障演练的时间,演练效率提升了数十倍。与16年故障演练数据对比,17年的故障演练平台,覆盖BU提升了1.6倍,覆盖应用提升了5倍,覆盖场景提升了37倍。

2017年强弱依赖自动化检测平台诞生。它提供了依赖检测、强弱分析、依赖扫描、故障注入等多种能力,底层能力基于JVM-Sandbox在1周内完成功能开发。强弱依赖梳理方面,承载了淘宝的系统强弱依赖梳理工作,260+个应用一键接入系统,并实现了0人工成本的自动化、智能化梳理。

在录制回放方面,线上录制隔离回放不仅极大的缩短的业务回归的耗时,把业务测试同学从繁琐的数据准备和接口自动化脚本的编写过程中解放出来,而且极大的拓展了覆盖范围,使回归的范围更贴近用户,且场景更丰富。在精准回归方面,2017年在JVM-Sandbox的基础上,利用LineEvnet实现了行链路识别和标记,有效的提升了录制回放的精准度和效率。

历时一年,精心编写,徐冬晨的这一套JVM-Sandbox是动态非侵入AOP解决方案屏蔽了字节码增强技术的高门槛,降低了研发运维成本,同时又能支持上层多个工具平台功能的快速实现和动态管理,无疑为阿里巴巴的多项业务开展提供了有力保障。

想要了解更多?5月18-19日,北京o粤财JW万豪酒店,全球最值得关注的IT技术盛宴与您不见不散。2018WOT全球软件与运维技术峰会一定是您发现全新思路、挖掘最新思想、拓展人脉的重要平台。

目前我们的各项票种已全面发售。需要提醒您的是,购票越早,折扣越大!与KOL零距离交流,呈现不一样的"英雄盛宴"!

 点击官网了解详情:wot.51cto.com


8折预售中,抢票从速。

【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】

【责任编辑:刘妮娜 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Oracle 10g应用指导与案例精讲

本书作者结合自己多年实践经验,从Oracle开发应用中遇到的问题着手,全面系统地介绍Oracle的安装与卸载、数据字典、安全管理以及用PL/SQL开...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊