SOA
SOA架构的出现早于微服务架构,SOA架构主要解决企业级应用集成的问题,强调应用已有功能的复用,其主要特征是企业服务总线(Enterprise Service Bus)的运用。SOA中的每一个应用向ESB暴露服务接口,其他应用通过ESB使用该服务,ESB负责协议转换、消息路由、格式转换等,一般采用同步的方式完成调用,但由于其中心化的特征,ESB本身容易成为系统瓶颈。
微服务
微服务架构是面向单个应用的架构设计模式,需要将应用按照功能划分为一组可以独立部署的微服务,强调解耦和单个微服务的自治。微服务之间不应有功能或数据上的相互依赖,每个微服务都有自己的数据模型,可以基于不同的数据存储技术(SQL、NoSQL),微服务之间的通信也应采用异步的方式。这样可以将单个微服务的错误对系统整体的影响降到最低,体现着高内聚、低耦合的原则。微服务是随着虚拟机、容器云等技术发展起来的,其一大优点是可以独立的横向扩展,有利于持续集成和持续交互
总结
SOA | 微服务 | |
---|---|---|
使用范围 | 企业层面 | 应用层面 |
服务粒度 | 粗 | 细 |
独立性 | 相互依赖 | 独立自治 |
数据存储 | 共享 | 独立 |
服务治理 | 集中式 | 分布式 |
服务通信 | 重量级、同步ESB | 轻量级、异步RESTful API |