SOA 和微服务之间的主要区别如下:
SOA |
微服务 |
遵循“尽可能多的共享”架构方法 |
遵循“尽可能少的共享”的架构方法 |
侧重点是业务功能重用 |
侧重点在于“bounded context”的概念 |
遵循共同治理并有相关的标准 |
专注于人的合作和其他选择的自由 |
使用企业服务总线(ESB)进行通信 |
简单的消息系统 |
支持多消息协议 |
使用轻量级协议,例如 HTTP/REST 等 |
多线程,有更多的开销来处理I / O |
单线程,通常使用事件循环进行非锁定 I/O 处理 |
最大化服务的可重用性 |
专注于解耦 |
使用传统关系数据库较多 |
使用现代关系型数据库较多 |
系统发生变化时需要修改整体 |
系统发生变化是创建一项新服务 |
DevOps和持续交付正在变得流行,但尚未成为主流 |
专注于DevOps和持续交付 |
SOA(面向服务架构)和微服务架构是两种不同的软件架构风格,它们有一些区别:
- 复杂性:SOA是一种更加综合和复杂的架构风格,它通常包含多个服务和中间件组件。而微服务是一种更加简单和轻量级的架构风格,每个微服务独立部署和运行。
- 粒度:SOA的服务通常是比较大的、面向业务功能的服务。微服务则更加细粒度,每个微服务通常只关注一个特定的业务功能。
- 通讯:SOA通常使用基于SOAP的Web服务进行通讯,而微服务通常使用更轻量级的通讯机制,如RESTful API。
- 拆分与自治:SOA的服务划分通常由企业的架构团队进行,而微服务架构鼓励团队自主决策和拆分服务。
- 部署和扩展:SOA的服务通常是集中部署和扩展的,而微服务可以独立部署和扩展,使得系统更加灵活和可伸缩。
- 技术栈:SOA通常使用企业级集成平台和中间件,如ESB(企业服务总线)。微服务架构则更加灵活,可以使用各种适合的技术栈和工具。
需要注意的是,SOA和微服务并不是互斥的,微服务架构可以被视为SOA的一种实现方式。SOA更加关注组织和企业级的架构,而微服务更加关注服务的独立性和可伸缩性。