SOA和微服务之间有什么区别

时间:2018-01-10 14:56:32

标签: web microservices distributed-computing soa

好的,据我所知,在SOA和微服务模块中,模块应该是独立且可重用的。但是真正区别于SOA和微服务的是什么?

5 个答案:

答案 0 :(得分:4)

两者都依赖于服务作为主要组件,但是两者之间存在很多差异。下面很少有人

SOA:

  • 遵循“尽可能多的共享”架构方法
  • 支持多种消息协议
  • 具有更多开销的多线程处理I / O
  • 最大限度地提高应用程序服务的可重用性
  • 未完全专注于DevOps /持续交付

微服务:

  • 遵循“尽可能多的共享”架构方法

  • 使用轻量级协议,例如HTTP / REST和AMQP

  • 单线程通常使用事件循环功能进行非锁定I / O处理

  • 更多关注去耦

  • 专注于DevOps /持续交付

答案 1 :(得分:0)

微服务架构不是发明。诸如Amazon,Netflix和eBay之类的企业使用分而治之策略将其整体应用程序功能性地划分为较小的单元,并解决了许多问题。随着这些公司的成功,许多其他公司开始采用这种方式作为重构其应用程序的通用模式。最终,该模式被称为微服务架构。 MSA中没有引入任何全新的内容。 MSA是SOA的逻辑演进,并支持现代业务用例。

enter image description here

Microservices vs SOA: How Are They Different?

答案 2 :(得分:0)

来自: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的系统,操作系统或云环境中。

答案 3 :(得分:0)

它们之间的区别(来自现实生活中的生产项目)是 SOA 项目具有 ESB(如 Mule ESB、Camel 或其他),旨在将消息(SOAP、JSON 等)从一个服务路由到另一个服务,其行为类似于服务之间的中介层。反过来,服务不知道对方,只是从 ESB 发送\接收消息。

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

答案 4 :(得分:0)

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

SOA 和微服务存在分歧的 3 个主要领域:

进程间组合

    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