SOA 与微服务
SOA 历史;与 spring-cloud 对照。
30 分钟
SOA 与微服务
面向服务的架构(SOA) 早在 2000 年代就主张「按业务能力拆服务、通过标准协议互联」。今天的 微服务 可看作 SOA 在容器与 DevOps 时代的演化;服务网格 则是微服务规模继续变大后,对 通信与治理 的再一次下沉。
学习目标
- 简述 SOA → 微服务 → 服务网格的演进脉络
- 对照 Spring Cloud 组件与网格能力
- 说清何时仍需要应用层框架、何时适合上网格
SOA 时代留下了什么
| SOA 概念 | 现代对应 |
|---|---|
| ESB 企业服务总线 | API 网关 + 消息中间件 |
| WSDL / SOAP | REST、gRPC(见 grpc-intro) |
| 服务注册 | Eureka、K8s Service、Istio 服务条目 |
| 策略集中管理 | 控制面 + GitOps |
ESB 常因 中心瓶颈、变更慢 被诟病;微服务强调 去中心化、独立部署,但治理逻辑又散落各服务——网格试图 集中策略、分布执行。
微服务架构要点
与 sc-architecture 一致:
- 按 业务能力 划边界(user、course、progress…)
- 独立数据库(理想情况)与独立发布节奏
- 通过 HTTP/RPC/消息 协作
Spring Cloud 在 应用进程内 提供客户端库:注册、配置、Feign、Gateway、熔断等。适合 VM / 混合部署 或团队以 Java 为主、尚未全面 K8s 化的阶段。
网格补哪一块
当服务数量、语言栈、团队数上去:
Spring Cloud Gateway(北向入口)
↓
各微服务 Pod
app ←→ Sidecar ←→ Sidecar ←→ app ← 东西向由网格统一
| 能力 | Spring Cloud 典型 | 网格典型 |
|---|---|---|
| 入口路由 | sc-gateway | Istio Gateway / K8s Ingress |
| 服务发现 | Eureka | K8s + Istio |
| 重试超时 | Feign + 配置 | VirtualService |
| 熔断 | sc-circuit-breaker | DestinationRule |
| mTLS | 较少默认开启 | 平台级自动签发 |
不是二选一:许多团队 北向仍用 Gateway/Nginx,东西向 ;或渐进式把 Resilience4j 规则迁移到 YAML 策略。