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

Java 作爲一門面向對象編程語言,在性能方面的卓越表現獨樹一幟。但在高性能的背後,Java 的啓動性能差也令人印象深刻,大家印象中的 Java 笨重、緩慢的印象也大多來源於此,高性能和快啓動速度似乎有一些相悖。

近日,阿里雲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 網盤:支持跨實例加速,在新包部署時,加速新啓動實例/分批發布啓動速度

加速效果

我們選擇一些微服務、複雜依賴的業務場景典型 Demo 或內部應用,測試啓動效果,發現應用普遍能降低 5%~45% 的啓動耗時。若應用啓動,存在下列場景,會有明顯的加速效果:

  • 類加載多(spring-petclinic 啓動加載約 12000+ classes)
  • 依賴外部數據越少

客戶案例

阿里巴巴搜索推薦 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 的啓動和運行加速技術,使得客戶可以輕鬆享受應用加速帶來的技術紅利。

原文鏈接

本文爲阿里雲原創內容,未經允許不得轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章