开篇
为什么要从安逸的Spring全家桶切换到Quarkus框架呢?Quarkus有什么优势?除了能够编译成Native Application外,还有什么值得我们使用它的吗?
Spring启动优化是个大难题,有专门出书写Spring启动优化的,特别是启动是的Bean扫描,当应用达到一定规模后,启动非常慢,一般开发人员又不太敢屏蔽一些Bean的初始化(谁知道会导致什么未知问题)。
Quarkus的一大优势就是快速启动,本文通过一个简单的应用对比以下传统Spring Boot项目与Quarkus项目的应用启动速度。
启动对比
首先,本文是对应一个简单的Restful服务进行启动时间对比,并不是实际真实项目,数据仅供参考。
对比应用概况
项目 | Spring Boot | Quarkus |
---|---|---|
API | 10个 | 10个 |
Service | 10个 | 10个 |
Service Implement | 10个 | 10个 |
打包方式 | Jar | Native |
对比数据
Spring Boot | Quarkus | |
---|---|---|
第一次 | 3.664s | 0.015s |
第二次 | 3.655s | 0.007s |
第三次 | 3.338s | 0.009s |
平均 | 3.552s | 0.010s |
总结
通过以上简单对比,Quarkus打包成Native应用后启动速度对比传统Spring Boot的Jar部署方式,启动速度有很明显的提升。个人感觉这个是Quarkus的最大优势,快速部署和启动对于高用户量的应用还是很有帮助的。