支撑双11每秒17.5万单事务 阿里巴巴对JVM都做了些什么?
https://mp.weixin.qq.com/s?__biz=MzA3OTg5NjcyMg==&mid=2661671930&idx=1&sn=beaf8157eae145d03fa55367bc419a7c&chksm=84fdca07b38a431150d8d1596d9f110fa29ace1d0cfc72032815e34ee9d4eae46f3e747b911f&scene=21#wechat_redirect 图片没太有意义 宣传作用 文字关键.
本次大会上,李三红重点呈现了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被编译拖累的问题。
导语:有人说,马云不如马化腾和李彦宏懂技术,因此,阿里巴巴的技术不行。但马云说,正因为自己不懂技术,所以阿里巴巴的技术才是最好。你可不要以为马云这话是语言艺术,在许多技术领域,阿里巴巴确实已经在领跑。
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并获得国际社区认可,老鱼想这或许就是阿里巴巴的成功之道。
[转帖]支撑双11每秒17.5万单事务 阿里巴巴对JVM都做了些什么?的更多相关文章
-
备战双 11!蚂蚁金服万级规模 K8s 集群管理系统如何设计?
作者 | 蚂蚁金服技术专家 沧漠 关注『阿里巴巴云原生』公众号,回复关键词"1024",可获取本文 PPT. 前言 Kubernetes 以其超前的设计理念和优秀的技术架构,在容器 ...
-
第四章 电商云化,4.2 集团AliDocker化双11总结(作者: 林轩、白慕、潇谦)
4.2 集团AliDocker化双11总结 前言 在基础设施方面,今年双11最大的变化是支撑双11的所有交易核心应用都跑在了Docker容器中.几十万Docker容器撑起了双11交易17.5万笔每秒的 ...
-
最强CP!阿里云联手支付宝小程序如何助力双11?
作为首次“全面上云”的双11,阿里云征服了每秒订单峰值54.4万笔的世界新记录.正是在阿里云的保驾护航下,即使访问量是平时的5到6倍,小程序也鲜少出现卡顿或者宕机的现象,“依靠阿里云,我们整个天猫双1 ...
-
媲美5G的Wifi网速、“备战”资产一键领……揭秘双11小二背后的保障力量
如今,双11不光是购物狂欢节,更是对技术的一次“大考”,对于阿里巴巴企业内部运营的基础保障技术而言,亦是如此. 回溯双11历史,这背后也经历过“小米加步枪”的阶段:作战室从随处是网线,交换机放地上的“ ...
-
第八章 交互技术,8.4 Weex 双11会场大规模应用的秒开实战和稳定性保障(作者:鬼道)
8.4 Weex 双11会场大规模应用的秒开实战和稳定性保障 前言 Native 开发的诸多亮点中,流畅体验和系统调用是最多被提及的.流畅体验体现在页面滚动/动画的流畅性,背后是更好的内存管理和更接近 ...
-
深入探访支付宝双11十年路,技术凿穿焦虑与想象极限 | CYZONE特写
小蚂蚁说: 双11十年间,交易规模的指数级增长不断挑战人们的想象力,而对蚂蚁技术团队来说,这不仅是一场消费盛宴,而是无数次濒临压力和焦虑极限的体验,更是技术的练兵场.如今双11对蚂蚁金服而言,已经绝不 ...
-
双11大考 POLARDB分钟级弹性让企业轻松扩展
无处不在的脉冲计算 阿里有双11,中国有春运,高考后有分数出来的那天,歌迷心中有周杰伦演唱会门票在线开售之时....有人的地方就有江湖,有人的地方也有脉冲计算,这些热点事件背后都需要大量的计算资源给予 ...
-
不仅仅是双11大屏—Flink应用场景介绍
双11大屏 每年天猫双十一购物节,都会有一块巨大的实时作战大屏,展现当前的销售情况. 这种炫酷的页面背后,其实有着非常强大的技术支撑,而这种场景其实就是实时报表分析. 实时报表分析是近年来很多公司采用 ...
-
[转]15年双11手淘前端技术巡演 - H5性能最佳实践
[原文地址]:https://github.com/amfe/article/issues/21 前言 2015年是全面『无线化』的一年,在BAT(财报)几家公司都已经超过50%的流量来自移动端,这次 ...
随机推荐
-
[转载]javascript创建对象的几种方式
原文链接:http://qingfeng825.iteye.com/blog/1935648 1. 工厂方法:能创建并返回特定类型对象的工厂函数(factory function). function ...
-
学习笔记 --- 最大流Dinic算法
为与机房各位神犇同步,学习下网络流,百度一下发现竟然那么多做法,最后在两种算法中抉择,分别是Dinic和ISAP算法,问过 CA爷后得知其实效率上无异,所以决定跟随Charge的步伐学习Dinic,所 ...
-
Linux 命令行生成随机密码的十种方法
Linux操作系统的一大优点是对于同样一件事情,你可以使用高达数百种方法来实现它.例如,你可以通过数十种方法来生成随机密码.本文将介绍生成随机密码的十种方法.这些方法均收集于Command-Line ...
-
Type Encoding
[Type Encodings] The compiler encodes the return and argument types for each method in a character s ...
-
Java根据html模板创建 html文件
1.创建html的java代码 package com.tydic.eshop.util; import java.io.FileInputStream; import java.io.FileOut ...
-
jquery mobile backbone
http://www.appliness.com/getting-started-with-html-mobile-application-development-using-jquery-mobil ...
-
Centos7上安装Kubernetes集群部署docker
一.安装前准备1.操作系统详情需要三台主机,都最小化安装 centos7.3,并update到最新 [root@master ~]# (Core) 角色 主机名 IPMaster master 192 ...
-
django user 权限
Django中的Users权限系统 2011-05-21 15:04:33 分类: Python/Ruby 权限系统包含1.用户2.权限(判断一个用户是否有特定的操作权限yes/no)3.组4.消息 ...
-
ZH奶酪:LAMP环境中如何重新部署一个Yii2.0 web项目
使用Yii2.0 framework开发的项目,使用Github进行版本控制,现在要把这个项目部署到一个新的电脑/系统中: (1)安装LAMP (2)在/var/www/html目录下执行 git c ...
-
idea 设置字体
1.设置 ui字体 修改编辑器的字体(也就是代码的字体):设置-Editor-Color&Font,默认的scheme是不可以更改的,你需要save as,建立一个新的(名字可以随意写个,My ...