支撑双11每秒17.5万单事务 阿里巴巴对JVM都做了什么?

简介: JVM圈子一年一度的顶级大会JVM Language Summit(JVMLS) 2017中,来自阿里巴巴的分享:《Optimize JVM at Alibaba for e-commerce apps running on 100,000+ servers》。

本文来自“IT168企业级”的今日头条企业号。感谢老鱼的精彩报道。
———————————————————————————————————————————
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也悉数现身会场,他们在做什么?


image
▲Sun公司总部Auditorium building

其实,这是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》。


image
▲JVMLS大会演讲台上首次出现中国公司的演讲主题

这让老鱼着实有些意外,虽然每年国内巨头公司并不乏派人参会,但能够站在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领域的技术进展和创新,以往这方面披露的材料很少,不过从此次大会上,阿里巴巴的演讲中,我们还是能获知一丝端倪。


image
▲阿里巴巴/蚂蚁金服的JVM 架构师李三红

演讲者是来自阿里巴巴/蚂蚁金服的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并获得国际社区认可,老鱼想这或许就是阿里巴巴的成功之道。

目录
相关文章
|
API 容器 Kubernetes
当 K8s 集群达到万级规模,阿里巴巴如何解决系统各组件性能问题?
作者 | 阿里云容器平台高级技术专家 曾凡松(逐灵) 本文主要介绍阿里巴巴在大规模生产环境中落地 Kubernetes 的过程中,在集群规模上遇到的典型问题以及对应的解决方案,内容包含对 etcd、kube-apiserver、kube-controller 的若干性能及稳定性增强,这些关键的增强是阿里巴巴内部上万节点的 Kubernetes 集群能够平稳支撑 2019 年天猫 618 大促的关键所在。
|
4月前
|
消息中间件 Java 程序员
阿里巴巴高并发架构到底多牛逼?是如何抗住淘宝双11亿级并发量?
众所周知,在Java的知识体系中,并发编程是非常重要的一环,也是面试的必问题,一个好的Java程序员是必须对并发编程这块有所了解的。
|
6月前
|
缓存 NoSQL 关系型数据库
性能第三讲:百万级QPS,支撑淘宝双11需要哪些技术
性能第三讲:百万级QPS,支撑淘宝双11需要哪些技术
418 0
|
缓存 监控 NoSQL
百万级QPS,支撑淘宝双11需要哪些技术
又到一年双11,相信大部分同学都曾经有这个疑问:支撑起淘宝双11这么大的流量,需要用到哪些核心技术?性能优化系列的第二篇我想跟大家探讨一下这个话题。
812 0
百万级QPS,支撑淘宝双11需要哪些技术
|
缓存 运维 负载均衡
厉害了,淘宝千万并发,14 次架构演进…
本文以设计淘宝网的后台架构为例,介绍从一百个并发到千万级并发情况下服务端的架构的14次演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知。
485 0
厉害了,淘宝千万并发,14 次架构演进…
|
存储 SQL 缓存
深度 | 每秒1.4亿次!再度刷新TPS记录的PolarDB如何应对双11“尖峰时刻”?
2020年是云原生数据库PolarDB全面支撑天猫双十一的第二年,天猫交易、买家、卖家以及物流等系统在双十一期间基于PolarDB为亿万客户提供了顺滑的体验。同时,PolarDB还刷新了去年由自己创造的数据库处理峰值(TPS)纪录,今年TPS峰值高达1.4亿次/秒,较去年提升了60%。
14006 0
深度 | 每秒1.4亿次!再度刷新TPS记录的PolarDB如何应对双11“尖峰时刻”?
|
运维 Kubernetes NoSQL
数万实例数百 TB 数据量,携程 Redis 治理演进之路
携程自 2013 年开始使用 Redis,旧时期为 Memcached 和 Redis 混用状态。由于 Redis 在处理性能,可储存 key 的多样化上有着显著的优势,2017 年开始,Memcached 全部下线,全公司开始大规模使用 Redis。
|
存储 弹性计算 Cloud Native
支撑双11双12的那条“神龙”,经历了几代升级?
性能普遍提升2-3成,RT大幅下降,业务丝般顺滑——这是神龙在2019双11大促的概括性表现。 2019年双11期间,神龙”扇动两翼“,充分发挥出两大优势。第一大优势,神龙实现了虚拟化卸载,以高负载压力下某电商应用为例,凭靠神龙,该应用实现30%的QPS上升、以及96.3%的RT下降。
1792 0
|
存储 SQL 算法
|
存储 SQL 消息中间件
每秒7亿次请求,阿里新一代数据库如何支撑?
Lindorm,就是云操作系统飞天中面向大数据存储处理的重要组成部分。Lindorm是基于HBase研发的、面向大数据领域的分布式NoSQL数据库,集大规模、高吞吐、快速灵活、实时混合能力于一身,面向海量数据场景提供世界领先的高性能、可跨域、多一致、多模型的混合存储处理能力。目前,Lindorm已经全面服务于阿里经济体中的大数据结构化、半结构化存储场景。 注:Lindorm是阿里内部HBase分支的别称,在阿里云上对外售卖的版本叫做HBase增强版,之后文中出现的HBase增强版和Lindorm都指同一个产品。
4490 0
每秒7亿次请求,阿里新一代数据库如何支撑?