一、Spring Cloud 部署现状 & 为什么选 Docker + K8s + GraalVM?
1.1 当前版本 & 生态
- Docker:27.x,BuildKit 支持多平台构建
- Kubernetes:1.32.x,Sidecar 容器 + Gateway API 稳定
- GraalVM:JDK 21+ Native Image,Spring Boot 3.3.x 原生支持
- 核心亮点:
- GraalVM:AOT 编译,启动快、低内存、ARM 兼容
- K8s:Deployment + Service + HPA + Ingress + ConfigMap/Secret
- 与 Spring Cloud 集成:Nacos Discovery、Gateway、Config 自动适配
1.2 对比其他部署方式
| 方案 | 启动时间 | 内存占用 | 可移植性 | 自动扩缩 | 社区活跃 | 大厂落地 | 推荐指数 |
|---|
| Docker + K8s + GraalVM | <50ms | ★★★★★ | ★★★★★ | ★★★★★ | ★★★★★ | 主流云厂商 | 首选 |
| Docker + K8s + JVM | 3-10s | ★★★ | ★★★★★ | ★★★★★ | ★★★★★ | 传统项目 | 备选 |
| Docker Compose | 3-10s | ★★★★ | ★★★★ | ★★ | ★★★★ | 小项目 | 开发/测试 |
| Serverless (Knative) | <100ms | ★★★★★ | ★★★★ | ★★★★★ | ★★★★ | 云厂商 | 未来趋势 |
| 传统 VM | 分钟级 | ★★ | ★★ | ★ | ★★ | 老项目 | 淘汰 |
二、GraalVM 原生镜像构建实战
2.1 引入 Spring Native
<properties>
<java.version>21</java.version>
<spring-boot.version>3.3.0</spring-boot.version>
<native-build-tools.version>0.10.2</>
org.springframework.boot
spring-boot-starter-web
org.graalvm.buildtools
native-maven-plugin
${native-build-tools.version}
true
compile-no-fork
package