SOA和微服务架构的区别

如题所述

SOA与微服务架构,在架构划分、技术平台选择等方面,均存在一定的区别。

一、架构划分不同

1、SOA强调按水平架构划分为:前、后端、数据库、测试等;

2、微服务强调按垂直架构划分,按业务能力划分,每个服务完成一种特定的功能,服务即产品。

二、技术平台选择不同

1、SOA应用倾向于使用统一的技术平台来解决所有问题;

2、微服务可以针对不同业务特征选择不同技术平台,去中心统一化,发挥各种技术平台的特长。

三、系统间边界处理机制不同

1、SOA架构强调的是异构系统之间的通信和解耦合;(一种粗粒度、松耦合的服务架构);

2、微服务架构强调的是系统按业务边界做细粒度的拆分和部署。

四、主要目标不同

1、SOA架构,主要目标是确保应用能够交互操作;

2、微服务架构,主要目标是实现新功能、并可以快速拓展开发团队。

参考资料

百度百科-SOA

百度百科-微服务架构

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16
首先,可以肯定的是SOA和微服务的确是一脉相承的,大神Martin Fowler提出来这一概念可以说把SOA的理念继续升华,精进了一步。其核心思想是在应用开发领域,使用一系列微小服务来实现单个应用的方式途径,或者说微服务的目的是有效的拆分应用,实现敏捷开发和部署 ,可以是使用不同的编程语言编写。而SOA可能包含的意义更泛一些,更不准确一些。

其次,从实现方式上,两者都是中立性,语言无关,协议跨平台,相比SOA,微服务框架将能够带来更大的敏捷性,并为你构建应用提供更轻量级、更高效率的开发。而SOA更适合大型企业中的业务过程编排、应用集成。另外还有微服务甚至是去ESB、去中心化、分布式的,而SOA还是以ESB为核心,大量的WS标准实现。
再次,从服务粒度上,既然是微,必然微服务更倡导服务的细粒度,重用组合,甚至是每个操作(或方法)都是独立开发的服务,足够小到不能再进行拆分。而SOA没有这么极致的要求,只需要接口契约的规范化,内部实现可以更粗粒度,微服务更多为了可扩充性、负载均衡以及提高吞吐量而去分解应用,但同时也引发了打破数据模型以及维护一致性的问题。
最后,从部署方式上,这个是最大的不同,对比Monolithic(有人翻译为单体)的Java EE部署架构,通过展现层打包WARs,业务层划分到JARs最后部署为EAR一个大包,而微服务则打开了这个黑盒子,把应用拆分成为一个一个的单个服务,应用Docker技术,不依赖任何服务器和数据模型,是一个 全栈应用,可以通过自动化方式独立部署,每个服务运行在自己的进程中,通过轻量的通讯机制联系,经常是基于HTTP资源API,这些服务基于业务能力构建,能实现集中化管理(因为服务太多啦,不集中管理就无法DevOps啦)。本回答被提问者采纳
第2个回答  2018-07-05
  如果一句话来谈SOA和微服务的区别,即微服务不再强调传统SOA架构里面比较重的ESB企业服务总线,同时SOA的思想进入到单个业务系统内部实现真正的组件化。
  微服务架构强调的第一个重点就是业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发,设计,运行和运维的小应用。
  这些小应用之间通过服务完成交互和集成。
  每个小应用从前端webui,到控制层,逻辑层,数据库访问,数据库都完全是独立的一套。
  在这里不用组件而用小应用这个词更加合适,每个小应用除了完成自身本身的业务功能外,重点就是还需要消费外部其它应用暴露的服务,同时自身也将自身的能力朝外部发布为服务。本回答被网友采纳
第3个回答  2020-05-14
SOA是一个集成式服务,由多个子系统组成,是系统级的,自顶向下开展实施
微服务架构的集成方式简单(http,rest,json),一个系统被拆分成多个服务,是团队级别,自顶向上开展实施的.
相似回答