支撑双11每秒17.5万单事务 阿里巴巴对JVM都做了些什么?
导语:有人说,马云不如马化腾和李彦宏懂技术,因此,阿里巴巴的技术不行。但马云说,正因为自己不懂技术,所以阿里巴巴的技术才是最好。你可不要以为马云这话是语言艺术,在许多技术领域,阿里巴巴确实已经在领跑。
2017年,阿里巴巴王刚、吴翰清同时入选MIT TR 35创中国互联网企业先河。
2016年双11,核心应用容器化,几十万容器支撑175000单每秒的下单峰值,阿里巴巴再次刷新自己的记录,阿里云打破CloudSort世界记录,将100TB数据排序的计算成本降低到1/3。同时自研AliFlash大量部署;
2015年,Sort Benchmark2015年排序竞赛中,飞天用377秒完成100TB的数据排序,打破四项世界纪录;
2014年,OceanBase 0.5版成功用于支付宝核心交易系统。智能服务平台初步完成建设,双11大促承载8成客户服务压力;
2013年,完成去IOE;飞天5K项目完成,突破5千计算集群规模,阿里云成为世界上第一个对外提供5K云计算服务能力的公司;
文 | 老鱼
事实上,阿里巴巴在技术上取得的成就远远不止于此,在Java领域,最近就有这样一件大事。
情怀!JVMLS 2017在原Sun总部召开!
7月29日,美国加州Santa Clara,原Sun公司总部Auditorium building,聚集了一大批全球最顶级的Java专家,不仅有JVM架构师John Rose,就连Java之父James Gosling也悉数现身会场,他们在做什么?
其实,这是JVM圈子一年一度的顶级大会JVM Language Summit(JVMLS) 2017的现场。称之为顶级会议,不是因为大咖多,而是因为,这是一个决定Java技术未来走向的重要会议,影响着千万的Java开发者。
众所周知,Java以它突出的优点,被大多数程序员所喜爱。毫不夸张的说,全世界的软件和互联网公司绝大多数都是Java用户。凭借其强大的生态系统和庞大的代码库,Java多年来一直在牢牢的霸占着TIOBE编程语言榜首的位置。
阿里巴巴惊现JVMLS 2017大会演讲台
今年的JVMLS大会,正好走过第10个年头,与以往不同,这次老鱼在大会Topic List中居然破天荒的看到了来自中国的演讲主题《Optimize JVM at Alibaba for e-commerce apps running on 100,000+ servers》。
这让老鱼着实有些意外,虽然每年国内巨头公司并不乏派人参会,但能够站在JVMLS大会演讲台上的,阿里巴巴绝对是第一个。要知道JVMLS大会并非水货大会,靠给钱或者刷脸想演讲肯定是不行的。想要有演讲资格,那得靠一流的Java技术水平和颇高的贡献值。
阿里巴巴与Java的故事
那么,在Java领域,阿里巴巴又有哪些成就和贡献?在好奇心驱使下,老鱼在网上详细搜索了一番,不查不之知道,一查还真吓一跳。
说到阿里巴巴在技术上最瞩目的成就,大部分人首先会想到双11。没错,从2009年双11每秒支持400单,到2016年,支撑每秒175000单,阿里巴巴一次又一次的刷新着自己创造的世界记录。
但鲜为人知的是,支撑双11这一世界上高复杂、高并发的电商系统背后最大的功臣其实是Java。
2004年,是一个转折。阿里巴巴从PHP语言转换成了Java语言,如今阿里基本上全线系统都是基于Java编写的,如企业分布式应用服务(EDAS)、分布式关系数据库(DRDS)、分布式消息服务(ONS)等等。
数据显示,阿里巴巴目前拥有着世界上几乎是最大规模的Java应用集群, Java代码量上亿,位居全球首位,当之无愧的Java最大用户。
如此大的Java应用规模,让阿里巴巴有机会通过丰富的业务场景试验,迭代式的创新,将还在象牙塔式的实验环境中的前沿Java技术应用于真实的生产环境。如双11这般大规模的Java实践经验,也是亚马逊、微软,Google等国外巨头所不具备的。
Alibaba JVM的三大技术创新
对于阿里巴巴在Java领域的技术进展和创新,以往这方面披露的材料很少,不过从此次大会上,阿里巴巴的演讲中,我们还是能获知一丝端倪。
演讲者是来自阿里巴巴/蚂蚁金服的JVM 架构师李三红,不仅携Alibaba JVM首次在大会上亮相,还分享了阿里巴巴结合自己的业务特点,在HotspotTM JVM上的开发成果。
Alibaba JVM了解的人可能不多,因为是首次亮相,老鱼这里简单科普下。正是由于广泛使用了Java技术,阿里巴巴最终走上了自己的JVM实践之路。但这并不让人意外,因为国际上早有先例,如Twitter也有JVM的定制优化实践。
最早从2010年,阿里巴巴就开始了基于OpenJDK6的JVM定制优化工作,这也是国内第一个优化、定制且开源的服务器版Java虚拟机。2015年开始,阿里巴巴JVM团队开始着手在OpenJDK8进行优化和定制工作,力求在稳定性,性能优化,以及技术前瞻性方面,满足阿里巴巴,蚂蚁金服,以及菜鸟快速发展的业务需求。定制的版本被命名为AJDK(Alibaba JDK)。
目前淘宝、天猫,蚂蚁,菜鸟,几乎所有的核心应用都从Oracle JDK切换到了AJDK上,并经过了双11的考验。
本次大会上,李三红重点呈现了Alibaba JVM三个方面技术创新:
- Containers Inside JVM
- Wisp协程
- JWarmup
事实上IBM,Waratek最早在2010年就开始尝试多租户JVM技术,但是只有技术本身,鲜有应用。基于多租户的资源隔离技术在阿里巴巴找到了应用的场景落地。在多个应用单元共享JVM实例的情况下,Alibaba JVM在共享的JVM内部,为每个应用单元创建一个虚拟的Container, 用于管理应用单元的Heap, CPU等关键资源的使用,以确保多个计算单元的安全运行。
李三红在接受老鱼采访时表示:“如果没有我们的尝试,Johannes Kepler University(JKU) Linz在HotSpot TM JVM 上的协程实现,或许要在相当长的一段时间被束之高阁。Alibaba JVM的Wisp协程技术,基于JKU 的协程实现,在上面做了大量的创新性工作,包括协程调度算法,JVM锁机制改造等等。正常的Java应用可以在几乎不改任何代码的情况下,“透明”地使用协程技术,获得免费的性能午餐。目前,Wisp协程技术已经被核心电商应用所使用。通过这项技术,阿里巴巴把JVM的性能提高10%+。”
JWarmup也是同样如此。Warmup问题一向是Java应用的老大难问题,Azul的商业版JVM, Zing实现了ReadyNowTM来解决这个问题。JWarmup类似于ReadyNowTM,不过是完全基于OpenJDK实现。通过JWarmup技术,阿里巴巴解决了大规模Java应用部署情况下CPU被编译拖累的问题。
JVM架构师John Rose高度评价阿里贡献
而正是阿里巴巴这种结合业务场景的技术创新,受到了大会顶级Java专家JVM架构师John Rose的高度评价,John Rose在OpenJDK Open Source Collaboration部分总结中表示,感谢Google,阿里巴巴在OpenJDK上的持续投资,以及做出的不可思议的工作,希望持续通过OpenJDK进行合作。
据了解,该合作包含但不限于通过OpenJDK社区, 与Oracle一起推动Continuation和Coroutine技术在Java 语言的标准化。这一部分是Wisp协程技术依赖的基础与前提,Oracle希望看到Alibaba JVM在这部分的改动。
Alibaba JVM已经落地的技术,JWarmup等,Oracle建议通过提Java Enhancement Proposal (JEP) 的方式,进入标准OpenJDK实现。包括Java Language Architect, Brian Goetz, Oracle Runtime Lead, Karen, 以及C2 Compiler Lead, Vladimir Kozlov等,对JWarmup表示了极大的兴趣,并且非常希望阿里通过OpenJDK,可以将JWarmup技术贡献到社区。
Alibaba JDK追求的目标是“The Best Java Foundation for Cloud”。这话是李三红在接受采访时,让老鱼印象最为深刻的一句话,放在文章最后老鱼觉得极为合适,因为这句话非常清楚的给出了Alibaba JDK的定位及价值。Alibaba JDK的愿景是为云计算提供高性能的JDK版本,不仅服务好包括淘宝,蚂蚁,菜鸟等内部客户, 更希望覆盖和服务好阿里云上所有的Java客户。
李三红最后还强调,根植于大规模的,在电商,金融,物流领域丰富的Java应用场景实践, Alibaba JVM希望在更多的技术领域,诸如Garbage Collector(GC),大规模分布式环境下的Java计算等方面带来技术性突破。
这不得不让人感叹,相比当下众多浮躁的企业,只要能保证上线无bug就行的得过且过的态度, 阿里巴巴对技术的执着追求,就显得尤为难得。
当然,正确的投入势必会带来丰厚的回报,正是阿里巴巴在JVM方面的不断投入,也才有了今天我们看到的成功双11,也才有了今日阿里巴巴登台JVMLS并获得国际社区认可,老鱼想这或许就是阿里巴巴的成功之道。
END
延伸阅读
公众号
laoyubiji
老鱼,10年企业级老编一枚,采访过上百位CEO/CTO,你若有故事,欢迎联系!
欢迎订阅老鱼笔记
✬如果你喜欢这篇文章,欢迎分享到朋友圈✬
评论功能现已开启,灰常接受一切形式的吐槽和赞美☺