SOA 与 微服务的区别
SOA(Service-Oriented Architecture)面向服务架构,一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S模型、XML(标准通用标记语言的子集)/Web Service技术之后的自然延伸;将紧耦合的系统,划分为面向业务的,粗粒度,松耦合,无状态的服务。服务发布出来供其他服务调用,一组互相依赖的服务就构成了SOA架构下的系统
微服务,经过分离的组件可以各自拥有独立的生命周期,独立部署(Docker),并且按需进行扩展。不仅如此,这种方式也打破了组件之间的技术依赖,这就允许每个服务各自选择最合适的技术进行实现,即不同的服务甚至可以采用不同的编程语言来实现,由独立的团队负责
微服务与SOA相比,更强调分布式系统的特性,比如横向伸缩性,服务发现,负载均衡,故障转移,高可用。互联网开发对服务治理提出了更多的要求,比如多版本,比如灰度升级,比如服务降级,比如分布式跟踪,这些都是在SOA实践中重视不够的。
Docker容器技术的出现,为微服务提供了更便利的条件,比如更小的部署单元,每个服务可以通过类似Node.js或Spring Boot的技术跑在自己的进程中。可能在几十台计算机中运行成千上万个Docker容器,每个容器都运行着服务的一个实例。随时可以增加某个服务的实例数,或者某个实例崩溃后,在其他的计算机上再创建该服务的新的实例。
SOA | 微服务架构 |
|---|---|
| 应用程序服务的可重用性的最大化 | 专注于解耦 |
| 系统性的改变需要修改整体 | 系统性的改变是创建一个新的服务 |
| DevOps和持续交付正在变得流行,但还不是主流 | 强烈关注DevOps和持续交付 |
| 专注于业务功能重用 | 更重视“上下文边界”的概念 |
| 通信使用企业服务总线ESB | 对于通信而言,使用较少精细和简单的消息系统 |
| 支持多种消息协议 | 使用轻量级协议,例如HTTP,REST或Thrift API |
| 对部署到它的所有服务使用通用平台 | 应用程序服务器不是真的被使用,通常使用云平台 |
| 容器(如Docker)的使用不太受欢迎 | 容器在微服务方面效果很好 |
| SOA服务共享数据存储 | 每个微服务可以有一个独立的数据存储 |
| 共同的治理和标准 | 轻松的治理,更加关注团队协作和选择自由 |
https://blog.csdn.net/wangqingpei557/article/details/45567565
https://blog.csdn.net/qq_16605855/article/details/81503838

浙公网安备 33010602011771号