請給 Sprint Boot 多一些內存
- 至少一臺 “服務發現” 的服務器;
- 可能有一個統一的網關 Gateway;
- 可能需要一個用於 “分佈式配置管理” 的配置中心;
- 可能進行 “服務追蹤”,知道我的請求從哪裏來,到哪裏去;
- 可能需要 “集羣監控”;
項目上線後發現,我們需要好多服務器,每次在集羣中增加服務器時,都感覺心疼;
壓測 30 秒
壓測前的內存佔用
壓測時的內存佔用
概覽
總結
一個 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 秒
壓測前的內存佔用
壓測時的內存佔用
概覽
總結
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
- jar 比較小,大約 10M
- 佔內存小,大約 30~60MB;
- 性能還可以,與 SprintBoot 相仿;
Micronaut
- Grails 團隊新寵;
- 可以用 Java、Groovy 和 Kotlin 編寫的基於微服務的應用程序;
- 相比 SprintBoot 已經比較全面;
- 性能較優,編碼方式與 SprintBoot 比較類似;
- 啓動時間和內存消耗方面比其他框架更高效;
- 多語言;
- 依賴注入;
- 內置多種雲本地功能;
- 很新,剛發佈 1.0.0
Javalin
- 上手極爲容易;
- 靈活,可以兼容同步和異步兩種編程思路;
- JAR 小,4~5M;
- 多語言;
- 有 KOA 的影子;
- 只有大約 2000 行源代碼,源代碼足夠簡單,可以理解和修復;
- 符合當今趨勢;
- 多語言;
- 嵌入式服務器 Jetty;
Quarkus
- 啓動快;
- JAR 小,大約 10M;
- 文檔比較少,官方文檔很豐富,DEMO 也很多;
- 適合雲原生;
- native 後,毫秒級啓動很吸引人,佔用內存很小很小,消耗資源少,性能很棒。
- 推薦。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://juejin.cn/post/6844903796573732878