支撐雙11每秒17.5萬單事務 阿裏巴巴對JVM都做了什麼?
本文來自“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也悉數現身會場,他們在做什麼?
▲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》。
這讓老魚著實有些意外,雖然每年國內巨頭公司並不乏派人參會,但能夠站在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 架構師李三紅
演講者是來自阿裏巴巴/螞蟻金服的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並獲得國際社區認可,老魚想這或許就是阿裏巴巴的成功之道。
我
最後更新:2017-08-24 11:32:57