請給 Sprint Boot 多一些內存

項目上線後發現,我們需要好多服務器,每次在集羣中增加服務器時,都感覺心疼;

壓測 30 秒

壓測前的內存佔用

如圖,內存佔用 304M。

壓測時的內存佔用

如圖,內存佔用 1520M(1.5G),CPU 上升到 321%

概覽

總結

一個 SprintBoot 的簡單應用,最少 1G 內存,一個業務點比較少的微服務編譯後的 JAR 會大約 50M;而 SprintCloud 引入的組件會相對多一些,消耗的資源也會相對更多一些。

啓動時間大約 10 秒左右: Started Application in 10.153 seconds (JVM running for 10.915)

JAVA 系響應式編程的工具包 Vert.x

介紹

背靠 Eclipse 的 Eclipse Vert.x 是一個用於在 JVM 上構建響應式應用程序的工具包。定位上與 SprintBoot 不衝突,甚至可以將 Vert.x 結合 SprintBoot 使用。衆多 Vert.x 模塊提供了大量微服務的組件,在很多人眼裏是一種微服務架構的選擇。

華爲微服務框架 Apache ServiceComb 就是以 Vert.x 爲底層框架實現的,在 "基準測試網站 TechEmpower" 中,Vert.x 的表現也十分亮眼。

壓測 30 秒

壓測前的內存佔用

如圖,內存佔用 65M。

壓測時的內存佔用

如圖,內存佔 139M,CPU 佔 2.1%,給人的感覺似乎並沒有進行壓測。

概覽

總結

Vert.x 單個服務打包完成後大約 7M 左右的 JAR,不依賴 Tomcat、Jetty 之類的容器,直接在 JVM 上跑。

Vert.x 消耗的資源很低,感覺一個 1 核 2G 的服務器已經能夠部署許多個 Vert.x 服務。除去編碼方面的問題,真心符合小項目和小模塊。git 市場上已經出現了基於 Vert.x 實現的開源網關 - VX-API-Gateway 幫助文檔 對多語言支持,很適合小型項目快速上線。

啓動時間不到 1 秒:Started Vert.x in 0.274 seconds (JVM running for 0.274)

JAVA 系其他微服務框架

SparkJava

Micronaut

Javalin

Quarkus

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://juejin.cn/post/6844903796573732878