在计算中,服务是指执行重复、冗余任务的单个或集体软件单元。在云计算时代,应用程序由一组服务组成,这些服务共同执行各种功能,以支持应用程序的整体功能。
在本文中,我们将探讨微服务体系结构(MSA)和面向服务体系结构(SOA)作为两种常见的基于服务的体系结构,它们如何依赖服务作为主要组件,以及它们在服务特性方面的差异。
我们来看看。
什么是面向服务的体系结构(SOA)?
面向服务的体系结构遵循多个自包含、离散和可重复服务的设计,这些服务共同用于形成应用程序功能的整体服务网格。
这使得应用程序组件框架能够通过利用服务接口(通信协议)与其他组件交互并提供服务。
SOA设计原则
面向服务的体系结构的原则可能因您的用例而异。以下是一些分离服务以形成SOA的常见原则:
- 抽象
- 可重用性
- 粒度
- 标准化合同
- 自治
- 无状态
- 发现
SOA的特点
SOA的一个基本用例是允许您通过集体使用多个不同的服务来构建应用程序,其中每个服务都由一个独特的业务或应用程序逻辑组成。
除此之外,SOA的一些常见功能包括:
- “尽可能多地共享”体系结构
- 业务功能重用的重要性
- 共同治理和标准
- 用于通信的企业服务总线(ESB)
- 多消息协议
- 用于部署到it的所有服务的通用平台
- 多线程,具有更多开销以处理I/O
- 最大化应用程序服务重用性
- 更可能使用传统的关系数据库
- 在DevOps模型中不首选
什么是微服务体系结构(MSA)?
微服务体系结构(通常称为微服务)遵循SOA模式,将单个应用程序分解为多个松散耦合的独立服务,并相互协作。
微服务通常被认为是容器化的完美用例,对于组织来说,在单独的容器上部署每个这样的微服务是相当常规的。这使得一个灵活、可移植和平台无关的多个服务的高效框架成为可能,允许每个服务在其自己的流程中运行时具有不同的操作系统和数据库。
MSA的特点
- “尽可能少地共享”体系结构
- 论有限语境概念的重要性
- 放松治理,更加关注人
- 高效协作和自由选择平台和技术
- 简单、不太复杂的消息传递系统
- 轻量级协议,如HTTP/REST和AMQP
- 单线程通常使用事件循环功能进行非锁定I/O处理
- 容器在MSA中工作得非常好,被认为是DevOps模型的完美之选
- 更关注decoupling
- 使用现代的非关系数据库
微服务与SOA:关键区别
让我们看看SOA和MSA之间的关键区别。
协调
SOA需要与多个组协调以创建业务请求。
相反,MSA中的服务之间很少或没有协调。如果需要在服务所有者之间进行协调,则可以通过小型应用程序开发团队来完成,并且可以快速开发、测试和部署服务。
服务粒度
微服务中的前缀“micro
”指的是其内部组件的粒度。MSA中的服务组件通常是单一用途的服务,可以很好地完成一件事。
SOA中的服务通常包含更多的业务功能,并且通常作为完整的子系统实现。
组件共享
SOA增强了组件共享,而MSA则试图通过“有界上下文”来最小化共享。有界上下文指的是将组件及其数据耦合为一个具有最小依赖性的单个单元。
由于SOA依赖于多个服务来满足业务请求,因此基于SOA构建的系统可能比MSA慢。
中间件与API层
SOA中的消息传递中间件提供了MSA中没有的大量附加功能,包括:
- 调解和路由
- 消息增强
- 消息和协议转换
MSA在服务和服务使用者之间有一个API层。
远程服务
SOA架构依赖于消息传递(AMQP
、MSMQ
)和SOAP
作为主要的远程访问协议。
大多数MSA依赖于两种协议REST和简单消息传递(JMS、MSMQ),MSA中的协议通常是同构的。
异构互操作性
SOA通过其消息传递中间件组件促进多种异构协议的传播。MSA试图通过减少集成选择的数量来简化体系结构模式。
如果您想在异构环境中使用不同的协议集成多个系统,则需要考虑SOA。
如果您的所有服务都可以通过相同的远程访问协议公开和访问,那么MSA是一个更好的选择。
契约解耦
契约解耦是抽象的圣杯。它提供了服务和消费者之间最大程度的解耦。它是SOA中提供的基本功能之一,但MSA不支持契约解耦。
选择哪种架构?
以下是选择其中一种模式时的几个关键注意事项:
- SOA更适合于需要与许多异构应用程序集成的大型复杂业务应用程序环境。然而,使用SOA模式实现具有定义良好的处理流的基于工作流的应用程序有点困难。小型应用程序也不适合SOA,因为它们不需要消息传递中间件组件。
- MSA模式非常适合较小且分区良好的基于web的系统。缺少消息传递中间件是使MSA不适合复杂环境的关键因素之一。
- 控制与编排。当从头开始开发应用程序时,使用MSA被认为是一种实用的选择,因为它为开发人员提供了更好的控制。另一方面,如果目标是协调业务流程,那么SOA被认为是空闲的,因为它提供了正确的框架。
- 早期阶段vs更成熟的组织。处于早期阶段的企业可能会发现MSA是一个理想的选择。随着业务的增长,组织可能需要诸如复杂请求转换和异构系统集成等功能。在这种情况下,组织经常使用SOA模式来取代MSA。
SOA和MSA在企业的不同层都遵循相同的服务模式。MSA的存在归结为SOA模式的成功,因此通常被称为SOA的子集。
虽然微服务和面向服务的体系结构都完全依赖于将应用程序分解为多个服务,但MSA在应用程序级别分解服务,而SOA在企业级别的服务可重用性上分解服务。
原文地址:https://www.bmc.com/blogs/microservices-vs-soa-whats-difference/#
除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/2334.html
暂无评论