SOA 与微服务 – 它们之间的区别
SOA 与微服务之间的主要区别
- SOA注重应用服务的可重用性,而微服务更注重解耦。
- SOA 本质上是单片的,而微服务是全栈的。
- SOA 应用程序旨在执行多项业务任务,而微服务则旨在执行单一业务任务。
- SOA 涉及服务之间共享数据存储,而在微服务中,每个服务可以拥有独立的数据存储。
- SOA 旨在跨服务共享资源,而微服务旨在托管可独立运行的服务。
- 在 SOA 中 Archi架构、DevOps和持续交付正在变得流行但尚未成为主流,而微服务则非常重视DevOps和持续交付。
- SOA 是一种可扩展性较差的架构,而微服务是一种可扩展性较高的架构。

什么是面向服务架构(SOA)?
SOA 是计算机软件设计中的一种架构模式。在这种类型的应用程序中,组件通过通信协议(通常通过网络)向其他组件提供服务。面向服务的原则独立于任何产品、供应商或技术。SOA 的全称是面向服务的架构
SOA使得各种网络上的软件组件能够更轻松地相互协作。按照SOA架构构建的Web服务往往会使Web服务更加独立。
什么是微服务?
微服务 是一种面向服务的架构模式,其中应用程序被构建为各种最小独立服务单元的集合。它是一种软件工程方法,侧重于将应用程序分解为具有明确定义接口的单一功能模块。
这些模块可以由拥有服务整个生命周期的小团队独立部署和运营。
“微”是指微服务的规模,必须由一个开发团队(5 到 10 名开发人员)管理。在这种方法中,大型应用程序被划分为最小的独立单元。
SOA 与微服务之间的区别
以下是 SOA 和微服务之间的区别:
SOA(面向服务 Archi结构 | 微服务 |
---|---|
SOA的 模型有一个单一的数据存储层,由该应用程序中的所有服务共享。 | 微服务应用程序主要将数据库或其他类型的存储专用于需要它的服务。 |
SOA 应用程序中不同服务之间的通信采用简单直接的方法。 | 微服务使用复杂的 API。 |
专注于最大化应用服务的可重用性。 | 更加注重解耦。 |
系统性变革需要修改整体。 | 系统的变革帮助您创建新的服务。 |
DevOps 和持续交付正在变得流行但尚未成为主流。 | 高度重视 DevOps 和持续交付 |
本质上是整体的 | 本质上是全栈的 |
支持多种消息协议。 | 使用轻量级协议,如 HTTP、REST 或 Thrift API。 |
它旨在跨服务共享资源。 | 它旨在托管可以独立运行的服务。 |
经常涉及组件共享 | 通常,它不包括组件共享 |
涉及服务之间共享数据存储 | 每个服务可以有独立的数据存储。 |
更适合大规模集成 | 更适合小型和基于网络的应用程序。 |
通过 ESB 进行通信 | 通过 API 层进行通信 |
依赖共享资源 | 依赖有界上下文进行耦合。 |
Less 部署灵活性 | 部署快捷简便。 |
SOA的技术栈相对于微服务来说较低。 | 微服务技术堆栈可能非常庞大。 |
业务单位相互依赖。 | 业务单位之间相互独立。 |
由两个或三个服务组成的 SOA 应用程序。 | 微服务应用程序可能有几十种服务。 |
SOA 应用程序旨在执行众多业务任务。 | 它们是为执行单一业务任务而构建的。 |
部署是一个耗时的过程。 | 部署简单且耗时较少。 |
业务逻辑组件存储在单一服务域简单有线协议(带有 XML JSON 的 HTTP)内部,API 由 SDK/客户端驱动。 | 业务逻辑可以跨域企业服务总线存在,就像服务之间的独立层一样。 |
使用企业服务总线 (ESB) 进行通信 | 它使用不太复杂和直接的消息系统 |
软件大小比任何传统软件都大 | 微服务中的软件规模很小 |
多线程,具有多种开销来处理 I/O | 单线程主要与事件循环功能一起使用,用于非锁定 I/O 处理 |
修改整体架构需要进行系统性变革 | 在微服务中,系统性变更就是创建一个新服务 |
专注于最大化应用服务的可重用性。 | 强调脱钩。 |
共同的治理和标准。 | 宽松的治理,更注重人们的合作和选择自由。 |
部署过程非常耗时。 | 部署简单且耗时少。 |
Less 可扩展的架构。 | 高度可扩展的架构。 |
什么是 SOA Archi结构?
面向服务的架构是一种软件设计风格。架构分为两部分
- 功能方面和
- 服务质量方面。
让我们详细了解一下它们:
功能方面
功能方面包含:
Transport / 运输:该组件将服务请求从服务消费者传输到服务提供者,并将服务响应从服务提供者传输到服务消费者。
服务通信协议:它允许服务提供者和消费者相互通信。
服务 Description:它解释了调用它所需的服务和数据。
服务:这是一项实际的服务。
业务流程: 该组件代表按照特定的预定义序列和特定规则调用的一组服务,以满足业务需求。
服务注册中心:此注册表包含服务提供商用于发布其服务的数据描述。
服务质量方面
服务品质包含:
- 政策: 它是一组协议,服务提供商根据该协议创建并向消费者提供服务。
- 安全性: 它代表识别和授权过程所需的一组协议。
- 交易: 它提供了一致结果的保证。
- 管理: SOA 的这个组件帮助您定义用于管理服务的属性集。
什么是微服务 Archi结构?
它是一种架构开发风格,允许将应用程序构建为为业务领域开发的小型自主服务的集合。
让我们以使用微服务架构开发的电子商务应用程序为例。在此示例中,每个微服务都专注于单一业务功能。搜索、评级和评论以及支付各自都有自己的实例(服务器)并相互通信。
在这个整体中 Archi架构中,所有组件都合并为一个模块。但在微服务中 Archi结构中,它们被分散到彼此通信的单独模块(微服务)中。
微服务之间的通信是无状态通信,其中每对请求和响应都是独立的。因此,微服务可以轻松通信。在微服务中 Archi结构上,数据是联合的。每个微服务都有一个单独的数据存储。
SOA 的特点
以下是 SOA 的重要特性
- SOA 使用接口来解决大型系统中困难的集成问题。
- SOA 使用 XML 模式与客户、提供商和供应商进行沟通。
- SOA 使用消息监控来改进性能测量并检测安全攻击。
- 由于它重用了服务,所以软件开发和管理的成本略低。
微服务的特点
以下是微服务的基本特征:
- 在微服务中,模块是松耦合的
- 对于项目的管理,也可以实现模块化。
- 可扩展性成本很低
- 在一个应用程序中使用多种技术作为多种功能非常容易。
- 对于进化系统来说,它是一种理想的服务,因为您无法预测将来有一天会访问您的应用程序的设备类型。
SOA 的优势
以下是 SOA 的优点/好处
- 编辑和更新任何服务都很容易
- 服务具有相同的目录结构,这使得消费者每次都可以从相同的目录访问服务数据。
- 服务使用通用语言与其他应用程序进行通信,这意味着它独立于平台
- 与功能齐全的应用程序相比,服务通常规模较小。因此,独立服务的调试和测试更加容易。
- SOA 允许重用现有系统的服务,交替构建新系统。
- 它提供插入新服务或升级现有设施以满足新的业务需求。
- 您可以增强服务的性能、功能,并轻松进行系统升级。
- SOA 可以调整或修改不同的外部环境
- 公司可以开发应用程序而无需替换现有的应用程序。
- 它提供可靠的应用程序,您可以在其中测试和调试独立服务而不是大量代码。
微服务的优势
以下是使用微服务的优点/好处:
- 更简单的架构模式,开发人员更容易理解
- IDE 速度更快,使开发人员更快、更高效
- Web容器启动速度更快;这有助于加快部署和开发的进程。
- 它允许团队独立于其他所有团队开发、部署和扩展他们的服务。
SOA 的缺点
以下是使用面向服务架构的缺点/劣势:
- 所有输入在发送到服务之前都应进行验证
- 从人力资源、开发和技术角度来说,SOA 是一项成本高昂的服务。
- 某些Web服务需要频繁地发送和接收消息和信息,因此每天很容易达到一百万个请求。
- SOA需要较高的投资成本
- 当一个服务与另一个服务交互时,开销会更大,这会增加响应时间
- SOA服务并不适合GUI(图形用户界面)应用程序,因此当SOA需要大量数据交换时,它会变得更加复杂。
微服务的缺点
以下是微服务的缺点/劣势:
- 它是为构建单片应用程序而开发的,因此不提供对开发分布式应用程序的明确支持。
- 测试更加困难
- 开发人员必须实现服务间通信机制。
- 实现跨多个服务的用例需要团队之间的协调。
- 微服务成本高昂,因为你总是需要为不同的业务任务维护各种服务器空间
哪 Archi结构是否更好?
SOA 是大型复杂业务应用程序的理想架构方法。它最适合需要与许多不同应用程序集成的环境。
然而,使用 SOA 架构模式实现具有明确处理流程的工作流应用程序具有挑战性。因此,小型应用程序也不适合 SOA,因为它们不需要中间件消息组件。另一方面,微服务模式非常适合较小且分区良好的基于 Web 的系统。