苏州团队实测:Spring Boot与Quarkus框架性能对比

公司新闻
苏州团队实测:Spring Boot与Quarkus框架性能对比

为什么要做这次对比

去年底,苏州工业园区一家做CRM系统的SaaS公司找到我们,说他们的微服务从8个涨到32个,服务器月租费从6000块涨到2万3。老板心疼了。技术总监老李琢磨:能不能换个更轻量的框架?于是我们把Spring Boot 3.2和Quarkus 3.6拉出来练了练。

说白了,这两个框架目前是Java后端最热门的选择。Spring Boot生态成熟,Quarkus主打云原生和启动速度。但到底选谁,光看官方benchmarks不够,得拿真实业务场景说话。

测试环境与方法

测试在苏州电信机房的一台16核32G服务器上进行,操作系统CentOS 7.9,JDK 21。我们用了公司CRM系统中真实的「客户列表查询」和「订单创建」两个接口,分别部署到Spring Boot和Quarkus上,用JMeter模拟200并发用户持续压测30分钟。

两个框架连接同一个MySQL 8.0数据库和Redis缓存,排除数据库层面的干扰。每个框架分别测了JVM模式和Native(GraalVM原生镜像)模式。

三个核心数据

启动速度:Spring Boot JVM模式启动需4.7秒,Quarkus JVM模式1.2秒。切到Native镜像后,Quarkus直接干到0.04秒,Spring Boot的Native镜像(Spring Native)是0.9秒。这个差距在Serverless场景下非常明显——苏州相城有家做智能家居的公司,他们的设备控制Lambda函数每天冷启动上万次,换Quarkus后冷启动延迟从3秒降到不到100毫秒。

内存占用:Spring Boot JVM模式驻留内存约380MB,Quarkus JVM模式180MB。Native模式下Quarkus只要45MB,Spring Boot Native是210MB。32个微服务算下来,Quarkus比Spring Boot省了将近4.8G内存,相当于少租两台4G的云主机。

吞吐量:200并发下,Spring Boot的订单创建接口QPS稳定在4200左右,Quarkus JVM模式QPS约3900,差距大概7%。但切到Native模式后,Quarkus的QPS反而略高,达到4350。查询接口两者基本持平,差异在误差范围内。

选型建议

跑了两周下来,我们的结论很直接:如果你的系统是长期运行的服务(比如CRM、ERP这种7x24小时在线的),Spring Boot依然是首选,生态丰富、踩坑资料多、招人也方便。苏州本地Java开发者十个有九个会用Spring Boot,团队上手成本几乎为零。

但如果你做的是函数计算、事件驱动、或者微服务数量特别多需要压缩资源开销的场景,Quarkus值得试。尤其是苏州工业园区那些从传统单体往微服务转型的制造企业,用Quarkus可以把服务器成本砍掉40%以上。

老李最后的选择是混合方案:核心交易服务保持Spring Boot不动,新开的报表服务和通知服务用Quarkus Native。上线三个月,服务器月租费从2万3降到了1万4,老板终于不念叨了。

别被框架的官方宣传忽悠了,自己跑一遍真实业务场景的数据比什么都靠谱。技术选型这事儿,适合的才是最好的。