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应用程序