萬萬沒想到,Spring Boot 竟然這么耗內存!


640?wx_fmt=jpeg

Spring Boot總體來說 ,搭建還是比較容易的,特別是Spring Cloud全家桶,簡稱親民微服務。
但在發展趨勢中,容器化技術已經成熟,面對巨耗內存的Spring Boot,小公司表示用不起。

如今,很多剛誕生的JAVA微服務框架大多主打“輕量級”,主要還是因為Spring Boot太重。

JAVA系微服務框架

No1-Spring Cloud

介紹

有Spring大靠山在,更新、穩定性、成熟度的問題根本不需要考慮。

在JAVA系混的技術人員大約都聽說過Spring的大名吧,所以不缺程序員……,而且這入手的難度十分低,完全可以省去一個架構師。

但是,你必然在服務器上付出:

  • 至少一台“服務發現 ”的服務器;

  • 可能有一個統一的網關Gateway;

  • 可能需要一個用於“分布式配置管理”的配置中心;

  • 可能進行“服務追蹤”,知道我的請求從哪里來,到哪里去;

  • 可能需要“集群監控”;

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

壓測30秒

壓測前的內存占用

640?wx_fmt=png

如圖,內存占用304M。

壓測時的內存占用

640?wx_fmt=png

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

概覽

640?wx_fmt=png

總結

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

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

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

介紹

背靠Eclipse的Eclipse Vert.x是一個用於在JVM上構建響應式應用程序的工具包。定位上與Spring Boot不沖突,甚至可以將Vert.x結合Spring Boot使用。

眾多Vert.x模塊提供了大量微服務的組件,在很多人眼里是一種微服務架構的選擇。

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

壓測30秒

壓測前的內存占用

640?wx_fmt=png

如圖,內存占用65M。

壓測時的內存占用

640?wx_fmt=png

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

概覽

640?wx_fmt=png

總結

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

Vert.x消耗的資源很低,感覺一個1核2G的服務器已經能夠部署許多個Vert.x服務。除去編碼方面的問題,真心符合小項目和小模塊。

git市場上已經出現了基於Vert.x實現的開源網關- VX-API-幫助文檔

https://duhua.gitee.io/vx-api-gateway-doc/

對多語言支持,很適合小型項目快速上線。

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

JAVA系其他微服務框架

SparkJava

  • jar比較小,大約10M

  • 占內存小,大約30~60MB;

  • 性能還可以,與Spring Boot相仿;

Micronaut

  • Grails團隊新寵;

  • 可以用 Java、Groovy 和 Kotlin 編寫的基於微服務的應用程序;

  • 相比Spring Boot已經比較全面;

  • 性能較優,編碼方式與Spring Boot比較類似;

  • 啟動時間和內存消耗方面比其他框架更高效;

  • 多語言;

  • 依賴注入;

  • 內置多種雲本地功能;

  • 很新,剛發布1.0.0

Javalin

  • 上手極為容易;

  • 靈活,可以兼容同步和異步兩種編程思路;

  • JAR小,4~5M;

  • 多語言;

  • 有KOA的影子;

  • 只有大約2000行源代碼,源代碼足夠簡單,可以理解和修復;

  • 符合當今趨勢;

  • 多語言;

  • 嵌入式服務器Jetty;

Quarkus

  • 啟動快;

  • JAR小,大約10M;

  • 文檔很少;

作者:襄垣

來源:https://juejin.im/post/5c89f266f265da2d8763b5f9

- END -

推薦閱讀:
1、

2、

3、

4、

5、

關注 Java技術棧 公眾號在后台回復: Java ,可獲取一份棧長整理的最新Java 技術干貨。

640

點擊「閱讀原文」和棧長學更多~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM