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

程式碼派就是我發表於2021-03-26

Java 作為一門物件導向程式語言,在效能方面的卓越表現獨樹一幟。 但在高效能的背後,Java 的啟動效能差也令人印象深刻,大家印象中的 Java 笨重、緩慢的印象也大多來源於此,高效能和快啟動速度似乎有一些相悖。 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 的啟動和執行加速技術,使得客戶可以輕鬆享受應用加速帶來的技術紅利。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31550522/viewspace-2765163/,如需轉載,請註明出處,否則將追究法律責任。

相關文章