SOA和微服务有什么区别
What is the difference between SOA and Microservices
好的,据我所知,SOA 和微服务模块都应该是独立的和可重用的。但是 SOA 和微服务的真正区别是什么?
两者都以服务为主要组成部分,但存在很多差异。以下几位
SOA:
- 遵循“尽可能共享”的架构方法
- 支持多种消息协议
- 多线程需要处理更多开销 I/O
- 最大化应用程序服务的可重用性
- 没有完全专注于 DevOps/持续交付
微服务:
遵循“尽可能少共享”的架构方法
使用轻量级协议,例如 HTTP/REST & AMQP
单线程通常使用事件循环功能进行非锁定I/O处理
更注重解耦
高度关注 DevOps/持续交付
微服务架构不是发明。 Amazon、Netflix 和 eBay 等企业使用分而治之的策略将其整体应用程序在功能上划分为更小的单元,并解决了许多问题问题。随着这些公司的成功,许多其他公司开始将此作为重构其应用程序的通用模式。最终,该模式被称为微服务架构。 MSA 中没有引入任何全新的东西。 MSA 是 SOA 的逻辑演变,支持现代业务用例。
SOA 和微服务有很多共同点,乍一看,后者似乎只是 SOA 已经描述的一个新的炒作流行语。然而,两者之间存在一些差异。
什么是微服务?
我们先来看看什么是微服务。尽管没有关于什么是微服务的通用定义,但微服务的定义有一些共同的特征。它们是:
- 微服务是小型的、单独的、独立的软件组件,它们一起构成了一个应用程序。
- 微服务是面向业务的,这意味着软件架构侧重于业务目的,例如业务能力、特定产品或服务。
- 每个微服务都提供一小部分软件来实现更大的目的。因此,微服务在运行时会定期相互通信。
- 微服务的一个主要目的是它们可以相互独立地开发和部署。这导致了开发团队在实践中的去中心化,这使他们能够更快地开发和部署,并减少依赖性和约束。
- 由于模块化架构和微服务之间通信接口数量的增加,可以更准确地分析错误和故障。此外,微服务架构通常设计为在单个微服务提供错误的情况下它们仍然可以正常工作。
- 微服务架构通常用于不断进一步发展的领域。在这样的环境中,独立开发和部署的优势以及容错能力是最重要的。
什么是面向服务的架构 (SOA)?
SOA 代表面向服务的体系结构,是一种软件体系结构样式,其中向同一体系结构中的其他组件提供通用服务,这些组件基于共享的通用服务提供更复杂的服务。最后,它类似于一个公司的共享服务中心。
让我们想象一下以下情况:一家在不同国家开展业务的公司目前没有共享服务中心。因此,基本的人力资源和财务活动,如工资单和会计,在每个国家都是单独进行的。通过实施共享服务中心,公司可以将与这些活动相关的所有请求发送到执行活动的单一联系点。任务完成后,结果将发送回各个国家/地区。然后,各个国家/地区使用这些结果,使它们适应国家/地区规则或各自的劳动力,并为其客户提供额外的、更复杂的或更个性化的服务。 SOA 的工作方式非常相似。它允许从单个应用程序中提取基本服务,并将它们捆绑在一个共享服务模块中。然后,此共享服务模块执行任务并将结果返回给各个应用程序,这些应用程序将进一步使用它们。
那么让我们来研究一下 SOA 和微服务有哪些共同点,哪些没有。
微服务和 SOA 有什么共同点?
两者都可以集成到更广泛的 IT 中——这与在自身边界之外没有集成的单一系统形成鲜明对比。在安全性非常重要或与预期的其他系统没有协同作用的领域,单体系统可能是更好的选择,但是,随着云技术的广泛采用和所需的可扩展性,集成系统通常是架构师的首选解决方案
两者都试图识别可应用于不同上下文和环境的独立软件部分。 SOA 借助将信息从一个系统传递到另一个系统的服务来做到这一点,而微服务则通过提供标准化通信接口的 API 来做到这一点
SOA 可以有非常不同的范围,从非常小到非常大。顾名思义,微服务也是如此,它可以只是用户在服务中的身份验证,也可以是电子商务购物篮背后的完整购买流程
微服务和SOA有什么区别?
SOA 的 objective 是将系统设计为一组松散耦合的服务,以实现应用程序的集成。相反,由于需要在不同操作系统上工作的多种云环境和移动解决方案,微服务具有 objective 可以在不同平台和不同环境中工作。
SOA 不是动态的,不能适应不同的目的。每次相关技术的关键架构部分发生变化时,都必须调整或重新开发它们。相反,微服务试图通过构建跨不同技术有效的标准化接口来变得更加独立。然而,通常存在不同的标准,最终会导致与 SOA 相同的挑战。
SOA 通常在不同服务之间共享基本组件。相反,微服务通常在服务中拥有它们需要的一切,并在每个微服务中复制。因此,微服务速度稍慢,但对底层服务的依赖程度较低。
SOA 和微服务是非常相似的概念。有些人可能还会争辩说微服务是一种特殊类型的 SOA。最后,SOA 和微服务都有其目的。 SOA 有助于互连大型企业系统(例如 HR 或 ERP 系统),以便它们可以通信和交换数据。与此相反,微服务的目标是在不同的环境中工作并独立于这些环境,例如基于 Web 的系统、操作系统或云环境。
它们之间的区别(来自实际生产项目)是 SOA 项目具有 ESB(如 Mule ESB、Camel 或其他),旨在从一项服务路由消息(SOAP、JSON 等)到另一个,并且充当服务之间的中介层。反过来,服务彼此不了解,只了解来自 ESB 的 send\receive 消息。
与 SOA 相反,微服务架构意味着服务将使用某种协议(通常是 HTTP)直接相互通信。
微服务类似于 SOA,因为我们专注于业务功能并将其分离为单个、小的可部署块。
我倾向于同意 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
好的,据我所知,SOA 和微服务模块都应该是独立的和可重用的。但是 SOA 和微服务的真正区别是什么?
两者都以服务为主要组成部分,但存在很多差异。以下几位
SOA:
- 遵循“尽可能共享”的架构方法
- 支持多种消息协议
- 多线程需要处理更多开销 I/O
- 最大化应用程序服务的可重用性
- 没有完全专注于 DevOps/持续交付
微服务:
遵循“尽可能少共享”的架构方法
使用轻量级协议,例如 HTTP/REST & AMQP
单线程通常使用事件循环功能进行非锁定I/O处理
更注重解耦
高度关注 DevOps/持续交付
微服务架构不是发明。 Amazon、Netflix 和 eBay 等企业使用分而治之的策略将其整体应用程序在功能上划分为更小的单元,并解决了许多问题问题。随着这些公司的成功,许多其他公司开始将此作为重构其应用程序的通用模式。最终,该模式被称为微服务架构。 MSA 中没有引入任何全新的东西。 MSA 是 SOA 的逻辑演变,支持现代业务用例。
SOA 和微服务有很多共同点,乍一看,后者似乎只是 SOA 已经描述的一个新的炒作流行语。然而,两者之间存在一些差异。
什么是微服务?
我们先来看看什么是微服务。尽管没有关于什么是微服务的通用定义,但微服务的定义有一些共同的特征。它们是:
- 微服务是小型的、单独的、独立的软件组件,它们一起构成了一个应用程序。
- 微服务是面向业务的,这意味着软件架构侧重于业务目的,例如业务能力、特定产品或服务。
- 每个微服务都提供一小部分软件来实现更大的目的。因此,微服务在运行时会定期相互通信。
- 微服务的一个主要目的是它们可以相互独立地开发和部署。这导致了开发团队在实践中的去中心化,这使他们能够更快地开发和部署,并减少依赖性和约束。
- 由于模块化架构和微服务之间通信接口数量的增加,可以更准确地分析错误和故障。此外,微服务架构通常设计为在单个微服务提供错误的情况下它们仍然可以正常工作。
- 微服务架构通常用于不断进一步发展的领域。在这样的环境中,独立开发和部署的优势以及容错能力是最重要的。
什么是面向服务的架构 (SOA)?
SOA 代表面向服务的体系结构,是一种软件体系结构样式,其中向同一体系结构中的其他组件提供通用服务,这些组件基于共享的通用服务提供更复杂的服务。最后,它类似于一个公司的共享服务中心。
让我们想象一下以下情况:一家在不同国家开展业务的公司目前没有共享服务中心。因此,基本的人力资源和财务活动,如工资单和会计,在每个国家都是单独进行的。通过实施共享服务中心,公司可以将与这些活动相关的所有请求发送到执行活动的单一联系点。任务完成后,结果将发送回各个国家/地区。然后,各个国家/地区使用这些结果,使它们适应国家/地区规则或各自的劳动力,并为其客户提供额外的、更复杂的或更个性化的服务。 SOA 的工作方式非常相似。它允许从单个应用程序中提取基本服务,并将它们捆绑在一个共享服务模块中。然后,此共享服务模块执行任务并将结果返回给各个应用程序,这些应用程序将进一步使用它们。
那么让我们来研究一下 SOA 和微服务有哪些共同点,哪些没有。
微服务和 SOA 有什么共同点?
两者都可以集成到更广泛的 IT 中——这与在自身边界之外没有集成的单一系统形成鲜明对比。在安全性非常重要或与预期的其他系统没有协同作用的领域,单体系统可能是更好的选择,但是,随着云技术的广泛采用和所需的可扩展性,集成系统通常是架构师的首选解决方案 两者都试图识别可应用于不同上下文和环境的独立软件部分。 SOA 借助将信息从一个系统传递到另一个系统的服务来做到这一点,而微服务则通过提供标准化通信接口的 API 来做到这一点 SOA 可以有非常不同的范围,从非常小到非常大。顾名思义,微服务也是如此,它可以只是用户在服务中的身份验证,也可以是电子商务购物篮背后的完整购买流程
微服务和SOA有什么区别?
SOA 的 objective 是将系统设计为一组松散耦合的服务,以实现应用程序的集成。相反,由于需要在不同操作系统上工作的多种云环境和移动解决方案,微服务具有 objective 可以在不同平台和不同环境中工作。 SOA 不是动态的,不能适应不同的目的。每次相关技术的关键架构部分发生变化时,都必须调整或重新开发它们。相反,微服务试图通过构建跨不同技术有效的标准化接口来变得更加独立。然而,通常存在不同的标准,最终会导致与 SOA 相同的挑战。 SOA 通常在不同服务之间共享基本组件。相反,微服务通常在服务中拥有它们需要的一切,并在每个微服务中复制。因此,微服务速度稍慢,但对底层服务的依赖程度较低。
SOA 和微服务是非常相似的概念。有些人可能还会争辩说微服务是一种特殊类型的 SOA。最后,SOA 和微服务都有其目的。 SOA 有助于互连大型企业系统(例如 HR 或 ERP 系统),以便它们可以通信和交换数据。与此相反,微服务的目标是在不同的环境中工作并独立于这些环境,例如基于 Web 的系统、操作系统或云环境。
它们之间的区别(来自实际生产项目)是 SOA 项目具有 ESB(如 Mule ESB、Camel 或其他),旨在从一项服务路由消息(SOAP、JSON 等)到另一个,并且充当服务之间的中介层。反过来,服务彼此不了解,只了解来自 ESB 的 send\receive 消息。
与 SOA 相反,微服务架构意味着服务将使用某种协议(通常是 HTTP)直接相互通信。 微服务类似于 SOA,因为我们专注于业务功能并将其分离为单个、小的可部署块。
我倾向于同意 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