GraalVM原生本機映象提示和技巧 -James Ward

banq發表於2020-05-08

可根據需求擴充套件和縮減的彈性基礎架構不僅是一種“無伺服器”風尚,而且是一種可降低成本和浪費的運營模式。但是,其中隱藏著一些魔鬼……當應用程式/微服務需要根據需求啟動時,由於需要將應用程式下載到節點,因此可能會有一些滯後,可能需要啟動VM,即應用程式本身需要啟動,並且可能需要本地快取。在傳統的企業系統中,這種“冷啟動”過程實際上可能要花費數十分鐘。但是,當事情花了這麼長時間開始時,幾乎不可能有基於需求的擴充套件。

GraalVM是Java虛擬機器實現,它通過在基於JVM的應用程式上進行提前(AOT)編譯來解決“冷啟動”問題的某些部分。GraalVM可以為您的應用程式建立一個“本機映象”,因此它不再需要在JVM中執行。這樣可以減少啟動時間,並且在某些情況下可以提高整體效能。本機映象還可以比通常的OS + JVM +所有依賴項JAR小得多。例如,我正在處理的最近一個應用程式是從一個精巧的208MB docker映像(OS + JVM + deps + app)開始的,該映像在2秒內啟動,下降到14MB,啟動時間為0.5s。聽起來很棒!但是,我想與您分享一些警告,技巧和竅門。

在生產中只有一個使用GraalVM本機映像的小型應用程式,它通過FROM scratch容器映像在Cloud Run上執行。它啟動速度超快,並位於44MB的容器映像中。GraalVM確實幫助解決了冷啟動問題。但是對於更復雜的應用程式呢?

詳情點選標題見原文。

相關文章