SOA(面向服务架构)和微服务之间有什么区别?

10
我理解的是,在SOA和微服务中,模块都应该是独立和可重用的。但是,究竟有什么区别呢?

6
可能是微服务架构和SOA的区别的重复问题。 - Constantin Galbenu
2
请直接参见原链接 https://stackoverflow.com/q/25501098/2575224。 - Constantin Galbenu
4
可能是微服务与SOA的区别的重复问题。 - ihebiheb
5个回答

13

两者都以服务为主要组件,但存在许多差异。以下是一些例子:

SOA:

  • 遵循“尽可能共享”的架构方法
  • 支持多种消息协议
  • 多线程,需要更多开销来处理I/O
  • 最大化应用程序服务的可重复使用性
  • 没有完全关注DevOps/持续交付

微服务:

  • 遵循“尽可能少共享”的架构方法
  • 使用轻量级协议,如HTTP/REST和AMQP
  • 通常是单线程,使用事件循环功能处理非锁定I/O
  • 更加关注解耦
  • 在DevOps/持续交付方面有着强烈的关注

ROA和微服务架构(MSA)有何不同? - sakeesh

6
微服务架构并非发明创造。 亚马逊、Netflix 和 eBay等企业使用分而治之的策略,将其单块应用程序分割为较小的单元,并解决了许多问题。跟随这些公司的成功,许多其他公司开始采用这种常见模式来重构其应用程序。最终该模式被称为微服务架构。MSA中没有引入任何根本性的新东西。 MSA是SOA的逻辑演进,支持现代业务用例。 enter image description here 微服务和SOA有什么不同?

2

我倾向于同意Chris Richardson[1]的定义。

SOA和微服务分歧的三个主要领域:

进程间通信

    SOA:
     Smart pipes eg. ESB          
     Protocols - SOAP, WS*
 
    Micro service:
     Dumb pipes eg. Message broker
     Protocols eg. REST, gRPC    

数据库

SOA:
 Shared databases

Micro Service:
 Databases per service

  

在面向服务的体系结构(SOA)中,服务往往是单块的,而在微服务中则是小型的。[1]: https://microservices.io/index.html


1

来源:https://www.digitalroadmap.management/blog/2019/11/19/what-are-microservices-and-what-is-soa-and-what-are-the-differences-7245k

SOA和微服务有很多共同点,乍一看,似乎后者只是SOA已经描述过的一个新的炒作词汇。然而,两者之间还是存在一些差异。

什么是微服务?

首先让我们看看什么是微服务。虽然没有关于微服务的通用定义,但微服务的定义中有几个常见的特征,包括:

  1. 微服务是软件的小型、独立和独立组件,共同构成一个应用程序。
  2. 微服务是面向业务的,这意味着软件架构专注于业务目的,例如业务能力、特定产品或服务。
  3. 每个微服务为更大的目的提供小型软件。因此,在操作时,微服务经常相互通信。
  4. 微服务的一个主要目的是它们可以独立开发和部署。这导致了实践中开发团队的分散,使他们能够更快地开发和部署,减少依赖和约束。
  5. 由于模块化架构和微服务之间通信接口的增加,错误和故障可以更精确地分析。此外,微服务架构通常设计为在单个微服务提供错误的情况下仍然正常运行。
  6. 微服务架构通常用于不断发展的领域。在这种环境中,独立开发和部署以及容错性的优势最为重要。

什么是面向服务的架构(SOA)?

SOA是面向服务的架构,是一种软件架构风格,其中提供通用服务给同一架构中的其他组件,这些组件根据共享的通用服务提供更复杂的服务。最终类似于公司的共享服务中心。
让我们想象以下情况:一家在不同国家运营的公司目前没有共享服务中心。因此,基本的人力资源和财务活动,如工资单和会计,在每个国家都是独立完成的。通过实施共享服务中心,公司可以将所有与这些活动相关的请求发送到一个单一的联系点,在那里执行这些活动。任务完成后,结果被发送回各个国家。然后,各个国家使用结果,根据国家规则或其个体员工进行调整,并为其客户提供更多、更复杂或更个性化的服务。SOA的工作方式非常相似。它允许从个别应用程序中提取基本服务,并将它们捆绑在共享服务模块中。然后,该共享服务模块执行任务并将结果提供回个别应用程序,后者进一步使用它们。
因此,让我们探究一下微服务和SOA有哪些共同点以及不同点。
微服务和SOA有什么共同点?
两者都可以与更广泛的IT集成,与没有集成到其它系统的单块系统相比。在安全性要求高或预计没有与其它系统协同的领域中,单块系统可能是更好的选择,然而,随着云技术的广泛采用和所需的可扩展性,集成系统通常是架构师首选的解决方案。 两者都试图识别可应用于不同上下文和环境的独立软件部件。SOA使用服务来传递信息,使一个系统与另一个系统交互;微服务则通过API提供标准化接口进行通信。 SOA的范围可以非常不同,从非常小到非常大。与名称所示的不同,这也适用于微服务,它可以仅是对服务进行用户身份验证,或者是您电子商务购物篮后面的完整购买流程。 微服务和SOA之间有哪些区别? SOA的目标是设计系统作为一组松散耦合的服务,使应用程序集成成为可能。相反,微服务的目标是在不同的平台和不同的环境中工作,这些环境由于多种云环境和需要在不同操作系统上工作的移动解决方案而出现。 SOA不够灵活,不能适用于不同的目的。每当所涉及技术的关键架构部分发生变化时,它们必须被适应或重新开发。相反,微服务试图通过建立在跨不同技术有效的标准化接口上来更加独立。然而,通常存在不同的标准,这最终可能导致SOA面临的同样挑战。 SOA通常在不同服务之间共享基本组件。相反,微服务通常在每个单独的微服务中复制其所需的所有内容。因此,微服务有点慢,但不太依赖底层服务才能工作。 SOA和微服务是相当相似的概念。有些人甚至认为微服务是SOA的一种特殊类型。最终,SOA和微服务都有各自的目的。SOA有助于将大型企业系统(例如HR或ERP系统)互联起来,以便它们可以通信和交换数据。相比之下,微服务的目标是在不同的环境中工作,并独立于这些环境,例如基于Web的系统、操作系统或云环境。

0

它们之间的区别(来自实际生产项目)在于SOA项目具有ESB(如Mule ESB、Camel或其他),旨在将消息(SOAP、JSON等)从一个服务路由到另一个服务,并充当服务之间的中介层。服务反过来不知道彼此,只是从ESB发送/接收消息。

与SOA相反,微服务架构意味着服务将直接使用某种协议(通常是HTTP)进行通信。 微服务与SOA类似,我们专注于业务功能并将其分成单个、小型可部署块。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接