Skip to content

Spring Cloud vs 云原生:两种架构对比

🕒 Published at:

Spring Cloud vs 云原生:两种架构对比 ​

1. 核心差异 ​

维度Spring Cloud 模式云原生模式
网关职责网关大包大揽:路由 + JWT + 授权 + 身份透传网关只做入口安全:路由 + JWT 验签 + 限流
授权位置网关统一授权(GatewayAuthorizationManager)各服务自行授权(从 JWT 取身份,自己判断)
服务间通信Feign(HTTP/1.1 + JSON)gRPC(HTTP/2 + Protobuf)
服务发现Nacos(Java,几百 MB)etcd(Go,几十 MB,K8s 标准)
消息队列RocketMQ(Java,几百 MB)NATS(Go,~20MB,CNCF 标准)
部署方式JAR + JVM(~300MB)原生二进制(~15MB)
可观测性Spring Actuator + 自建Prometheus + Loki + OpenTelemetry(CNCF 标准)
安全模型边界信任(内网安全)零信任(每次请求都验证)

2. 两种模式没有绝对好坏,取决于场景 ​

什么时候 Spring Cloud 好? ​

场景原因
团队全是 Java 工程师零学习成本,Spring 生态成熟
大公司,已有完善基础设施服务器管够,不在乎几百 MB 内存
业务复杂,需要快速迭代Spring Cloud Gateway + Spring Security 开箱即用
不需要弱设备只在云服务器上跑

什么时候云原生好? ​

场景原因
盒子/弱设备部署Go 二进制 ~15MB,内存 1GB 够用
多语言团队(Go + Java)gRPC 跨语言,各自独立
追求资源利用率内存从 2GB+ 降到 600MB
面试/简历需要CNCF 标准,面试官认可

3. 为什么你的场景不适合 Spring Cloud ​

你当前 Spring Cloud 的架构放在云服务器上完全没问题,问题在于你要跑盒子:

组件内存盒子 1GB 能跑?
Nacos~300MB❌
RocketMQ~300MB❌
ES~500MB❌
网关(JVM)~200MB❌
每个 Java 服务~200MB❌
合计2GB+❌

换成云原生后:

组件内存盒子 1GB 能跑?
etcd~50MB✅
NATS~20MB✅
Redis~100MB✅
Traefik~30MB✅
每个 Go 服务~15MB✅
业务合计~230MB✅

4. 结论 ​

Spring Cloud 没有错,只是不适合你的场景。

你现在做的事就是从"一个正确的架构"迁移到"另一个正确的架构",因为你的部署目标变了(从云服务器变成了盒子设备)。