SOA 与微服务 – 两者区别
SOA与微服务之间的主要区别
- SOA 侧重于应用程序服务的可重用性,而微服务更侧重于解耦。
- SOA 本质上是单体式的,而微服务是全栈的。
- SOA 应用程序旨在执行许多业务任务,而微服务旨在执行单个业务任务。
- SOA 涉及服务之间的共享数据存储,而在微服务中,每个服务都可以拥有独立的数据存储。
- SOA 旨在跨服务共享资源,而微服务旨在托管可以独立运行的服务。
- 在 SOA 架构中,DevOps 和持续交付正变得流行,但尚未成为主流,而微服务则高度强调 DevOps 和持续交付。
- SOA 是一种可伸缩性较差的架构,而微服务是一种高度可伸缩的架构。

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