SOA(面向服务的架构) 和 microservices 都将系统分解为多个服务,但它们在粒度、数据所有权和服务通信方式上有所不同。
SOA(面向服务的架构) 和 microservices 都将系统分解为多个服务,但它们在粒度、数据所有权和服务通信方式上有所不同。
一个包含详细解答的 IT 面试题库——从初级到高级。
捐赠| 方面 | SOA | Microservices |
|---|
| 粒度 | 粗粒度 | 细粒度 |
| 通信 | 通常通过ESB | 轻量级(REST/gRPC/消息) |
| 数据 | 频繁共享 | 每个服务一个数据库 |
| 治理 | 集中式 | 分布式 |
| 协议 | 通常是SOAP/XML | 通常是HTTP/JSON、gRPC |
SOA ─▶ Service A ─▶ [ Enterprise Service Bus ] ─▶ Service B
(smart pipes, central orchestration, shared schemas)
Microservices ─▶ Service A ──(direct REST/gRPC/event)──▶ Service B
("smart endpoints, dumb pipes" — logic lives in services)
微服务遵循 "smart endpoints, dumb pipes" 原则:智能逻辑存在于服务中,传输保持简单。SOA通常将逻辑集中在ESB中。
不要重新引入类似ESB的瓶颈。一个繁重的中央总线会把微服务变回SOA,只是增加了额外步骤。
差异主要在于 分布式:微服务将数据所有权和逻辑推向每个服务,以避免许多SOA部署中困扰系统的中央瓶颈。
理解这一点可以防止你在微服务标签下意外地重新构建SOA的耦合。