单体架构假设应用程序的所有功能都集中在单个开发和部署的代码中。
**服务导向架构(SOA)**特别是微服务——是一种方法,其中应用程序由一组通过明确的接口(通常是网络)进行交互的模块组成。
何时使用单体架构:
何时使用SOA:
比较示例: 单体架构:
public class Application { public static void main(String[] args){ UserService userService = new UserService(); OrderService orderService = new OrderService(); // 订单、用户的逻辑——所有都在一个应用程序中 } }
SOA——通过API进行交互:
GET /user/42 # 调用用户服务 GET /order/532 # 调用订单服务
关键特性:
SOA是否在服务之间共享数据库?
通常服务间会共享数据以减弱耦合性。共享数据库在迁移阶段是可接受的,但理想情况下每个服务都有独立的数据库。
单体架构在性能上总是更差吗?
不,单体架构在小规模数据时可能更高效,因为没有多余的网络调用和内存分隔。
可以“一步到位”将单体架构转变为微服务吗?
不,通常转换是逐步进行的,从确定上下文边界开始,将其转换为服务。