SOA和微服务架构的区别是什么?

徐元一


笔者目前就职于国内知名互联网公司,做过toG和toB的私有化项目的微服务架构设计,也做过大型产品层面的微服务架构设计,就SOA和微服务架构的区别这个问题,来谈一谈我的看法。

不同的声音

某些针对微服务架构的批评声称微服务其实就是SOA,并没有新鲜的内容。在某些层面,它们的确有些相似。SOA和微服务架构都是特定的架构风格,它们都以一系列服务的方式来把一个系统组织在一起。但如果深入研究,你就会发现微服务和SOA之间巨大的差异。

SOA与微服务差异

SOA与微服务的差异主要体现在三个方面:服务间通信、数据管理、服务规模:

1 服务间通信

SOA和微服务架构通常采用完全不同的技术栈:

  • SOA采用智能管道,如Enterprise Service Bus(ESB,是包含了业务和消息处理的智能管道),往往采用重量级协议,例如SOAP或其他WS*标准;

  • 微服务使用哑管道,例如消息代理,或者服务之间点对点通信,例如restfull请求或者grpc类的轻量级协议。

2 数据管理

SOA和微服务架构在处理数据的方式上也不尽相同:

  • SOA采用全局数据模型并共享数据库;

  • 微服务架构则是每个服务都有自己的数据模型和数据库。更进一步,每一个服务一般都拥有属于它自己的领域模型。(笔者后续会有文章专门讲述领域模型设计)

3 服务规模

SOA和微服务架构之间的另一个重要区别就是服务的尺寸(规模):

  • SOA善于集成大型、复杂的单体应用程序;

  • 微服务则是拆分为较小的服务

SOA与微服务架构图

一个典型的SOA系统架构如下:

一个典型的微服务架构如下:


架构师成长录


SOA架构强调的是整体企业IT架构,而企业IT架构包括应用架构、数据架构、技术架构,SOA架构及方法论帮助企业制定正确的IT架构战略,将企业系统划分为不同的服务,增强系统间的灵活性的同时,为企业搭建一个统一的IT治理体系。微服务架构更多则侧重于应用架构,或者说应用开发的技术架构。

早期SOA刚兴起时,提到SOA,经常想到ESB,ESB定位是通过热拔插方式实现系统的集成、互联互通,SOA是一个概念,ESB做支撑落地SOA,SOA架构更加偏重于企业资产的复用,资源服务化管理,解决异构应用的对接和服务化。

微服务强调服务拆分尽可能小,服务相互独立无互相依赖,尽可能使用简单协议如REST,微服务更加强调服务的自治性,每个模块模块能够单独部署,这样一方面简化了模块重组排列的方式,但同时将每一个应用拆分为单独的部署工程增加了工程下测试、运维的难度。


数通畅联


微服务首先是一个架构思想,和它同一层面的东西有SOA,SOA是一种粗粒度、松耦合的的服务架构,强调的是异构系统之间的通信和解耦合,而微服务架构强调的是系统按业务边界做细粒度的拆分和部署:

两者有个最明显的区别,SOA的通信使用企业服务总线ESB,微服务的通信使用轻量级通信协议如Restful。


IT极客老兵


微服务架构系统灵活性,健壮性,扩展性好,特别适合需求变化迅速的场景。但系统复杂度高,部署,管理难度大。微服务除了开发期框架之外,还有需要一系列的运行期中间件支撑,如API网关,服务注册中心,统一配置中心等。 目前国内比较成熟的吧,东软有一支团队在做,他们网站是 https://platform.neusoft.com/


用户5702379994320


单体架构 基于ESB(企业服务总线)的SOA架构 互联网技术发展的必然产物微服务架构

单体架构和SOA架构系统部署,管理相对简单,但系统健壮性,灵活性,扩展性相对一般,适合业务,用户量,变化相对稳定的场景。

微服务架构系统灵活性,健壮性,扩展性好,特别适合需求变化迅速的场景。但系统复杂度高,部署,管理难度大。

东软的微服务架构做的不错,具体可以去官网看看,https://platform.neusoft.com/


分享到:


相關文章: