Java應用全鏈路啓動速度提高至15s,阿里雲SAE能力再升級

簡介: Java 做爲一門面向對象編程語言,在性能方面的卓越表現獨樹一幟。但在高性能的背後,Java 的啓動性能差也使人印象深入,你們印象中的 Java 笨重、緩慢的印象也大多來源於此,高性能和快啓動速度彷佛有一些相悖。spring

image.png

近日,阿里雲Serverless應用引擎(SAE)重磅發佈 Java 應用啓動加速功能,首度將 Alibaba Dragonwell(阿里巴巴開源的 Open JDK 長期支持版本)的冷啓動加速技術、多線程運行加速技術和 SAE 自身的原地升級策略、鏡像預熱策略相結合,實現了 Java 應用的端到端啓動速度提高至僅15s,多線程性能提高30%,再加上其自身的0代碼改造優點,已成爲企業享受 Serverless 價值的最短路徑。編程

難點分析

衆所周知,微服務的用戶在應用啓動層面面臨着一些難題:
• 軟件包大:幾百 MB 甚至 GB 級別
• 依賴包多:上百個依賴包,幾千個 Class
• 加載耗時:從磁盤加載依賴包,再到 Class 按需加載,最高可佔啓動耗時的一半
藉助 Dragonwell 快速啓動和多線程運行加速能力,SAE 爲 Serverless Java 應用提供了一套,讓應用盡量加速啓動的最佳實踐,讓開發者更專一於業務開發:
• Java 環境 + JAR/WAR 軟件包部署:集成 Dragonwell 11 ,提供加速啓動環境
• JVM 快捷設置:支持一鍵開啓快速啓動,簡化操做
• NAS 網盤:支持跨實例加速,在新包部署時,加速新啓動實例/分批發布啓動速度
image.png緩存

加速效果

咱們選擇一些微服務、複雜依賴的業務場景典型 Demo 或內部應用,測試啓動效果,發現應用廣泛能下降 5%~45% 的啓動耗時。若應用啓動,存在下列場景,會有明顯加速效果:
• 類加載多(spring-petclinic 啓動加載約 12000+ classes)
• 依賴外部數據越少
image.png多線程

客戶案例

阿里巴巴搜索推薦 Serverless 平臺

阿里內部的搜索推薦 Serverless 平臺經過類加載隔離機制,將多個業務的合併部署在同一個 Java 虛擬機中。調度系統會按需地將業務代碼合併部署到空閒的容器中,讓多個業務能夠共享同一個資源池,大大提升部署密度和總體的 CPU 使用率。
因爲要支撐大量不一樣的業務研發運行,平臺自己須要提供足夠豐富的功能,如緩存、RPC調用。所以搜索推薦 Serverless 平臺的每一個 JVM 都須要拉起相似 Pandora Boot 的中間件隔離容器,這將加載大量的類,拖累了平臺自身的啓動速度。當突增的需求進入,調度系統須要拉起更多容器以供業務代碼部署,此時容器自己的啓動時間就顯得尤其重要。
基於 Dragonwell 的快速啓動技術,搜索推薦平臺在預發佈環境會執行 AppCDS、Jarindex 等優化,將產生的 archive 文件打入容器鏡像中,這樣每個容器在啓動時都能享受加速,減小約30%的啓動耗時。架構

潮牌秒殺SAE極致彈性

某外部客戶,藉助 SAE 提供的 Jar 包部署與 Dragonwell 11,快速迭代上線了某潮牌商場 App。
在面對大促秒殺時,藉助 SAE Serverless 極致彈性,與應用指標 QPS RT 指標彈性能力,輕鬆面對 10 倍以上快速擴容需求;同時一鍵開啓 Dragonwell 加強的 AppCDS 啓動加速能力,下降 Java 應用 20% 以上啓動耗時,進一步加速應用啓動,保證業務平穩健康運行。
SAE 是面向應用的 aPaaS 平臺,實現了Serverless 架構 + 微服務架構的完美融合,這次再磅以 Dragonwell 的啓動和運行加速技術,使得客戶能夠輕鬆享受應用加速帶來的技術紅利。less

原文連接
本文爲阿里雲原創內容,未經容許不得轉載。編程語言

相關文章
相關標籤/搜索