Spring Cloud全家桶的構建是建立在Spring Boot基礎上的,特別上容器化技術已經成熟,以快而著稱,號稱3秒內啓動。其實企業級的docker容器一般內存低於4g(快),如何解決SpringBoot巨耗內存,構建慢,啓動也很慢,這確實是每個架構師一個很值得思考的問題!當然,Spring Cloud的工藝水平有多優秀,更新速度之快,穩定性,成熟度,早已在很多大型的企業級的應用中得到驗證。本文將從更開放的視角看更好的解決方案。
1. Spring Cloud 之殤
社區裏很多人都在反饋Spring Boot,構建比較慢,打包完成後JAR會大約50M,啓動比較慢(Started Application in 10.153 seconds),啓動之後比較佔內存(內存佔用304M)。
壓測30秒,內存佔用1520M(1.5G),CPU上升到321%
而SprintCloud引入的組件會相對多一些,那時消耗的資源也會相對更多一些。
2. Vert.x
背靠Eclipse的Eclipse Vert.x是一個用於在JVM上構建響應式應用程序的工具包。Java能做的,Vert.x都能做。Vert.x底層基於Netty,提供了豐富的IO類庫,支持多種網絡應用開發。Vert.x模塊提供了大量微服務的組件,在很多人眼裏是一種微服務架構的選擇。
華爲微服務框架Apache ServiceComb就是以Vert.x爲底層框架實現的,在"基準測試網站TechEmpower"中,Vert.x的表現也十分亮眼。
Vert.x 構建非常快,打包完成後JAR大約7M左右,啓動時間不到1秒(Started Vert.x in 0.274 seconds
),啓動之後內存佔用65M
壓測30秒,內存佔139M,CPU佔2.1%,確實很強悍吧!
3. Micronaut
- Grails團隊新寵;
- 可以用 Java、Groovy 和 Kotlin 編寫的基於微服務的應用程序;
- 相比SprintBoot已經比較全面;
- 性能較優,編碼方式與SprintBoot比較類似;
- 啓動時間和內存消耗方面比其他框架更高效;
- 多語言;
- 依賴注入;
- 內置多種雲本地功能;
4. Helidon
Oracle推出新的開源框架,受NodeJS和其他Java框架的啓發,Helidon的Web服務器是一個異步、反應性API,運行在Netty之上。
5. Javalin
- 上手極爲容易,非常適合Kotlin和Java程序員;
- 靈活,可以兼容同步和異步兩種編程思路;
- 有KOA的影子
- 只有大約2000行源代碼,源代碼足夠簡單,可以理解和修復;
- 嵌入式服務器Jetty;
6. SparkJava
- 輕量級Java Web框架,構建在Jetty Web服務器上;
- 基於Java 8 lambda表達式構建,上手極爲容易,容易地創建REST API或Web應用程序