SOA架构

SOA架构

Service-Oriented Architecture,SOA是一种软件架构模式,旨在将应用程序的不同功能划分为一组可重用的、自治的、可互操作的服务

每个服务表示一个特定的业务功能,并通过定义明确的接口和协议来实现与其他服务的通信。
SOA的主要目标是实现业务流程的灵活性、可扩展性和重用性

主要组件和角色

  1. 服务提供者(Service Provider): 负责实现和提供特定的服务,定义服务的接口和协议。
  2. 服务消费者(Service Consumer): 使用其他服务提供的功能的应用程序或组件。
  3. 服务注册与发现: 提供服务的注册和发现机制,使消费者能够找到需要的服务。
  4. 服务协议: 定义服务之间的通信协议,可以使用SOAP。

SOA规范

  1. SOA 拥有领导制定技术标准的组织 Open CSA;
  2. SOA 具有清晰的软件设计的指导原则,比如服务的封装性、自治、松耦合、可重用、可组合、无状态,等等;
  3. SOA 架构明确了采用 SOAP 作为远程调用的协议,依靠 SOAP 协议族(WSDL、UDDI 和一大票 WS-*
    协议)来完成服务的发布、发现和治理;
  4. SOA 架构会利用一个被称为是企业服务总线(Enterprise Service
    Bus,ESB)的消息管道,来实现各个子系统之间的通讯交互,这就让各个服务间在 ESB
    的调度下,不需要相互依赖就可以实现相互通讯,既带来了服务松耦合的好处,也为以后可以进一步实现业务流程编排(Business
    Process Management,BPM)提供了基础;
  5. SOA 架构使用了服务数据对象(Service Data Object,SDO)来访问和表示数据,使用服务组件架构(Service
    Component Architecture,SCA)来定义服务封装的形式和服务运行的容器;
    ……

优势

  1. 重用性: SOA的主要目标之一是促进服务的重用。各个服务可以独立地开发、测试和部署,从而在不同应用程序中重复使用。
  2. 灵活性: SOA支持将不同的服务组合成业务流程,可以根据业务需求轻松地调整和修改这些流程。
  3. 松散耦合: 通过明确定义的服务接口,不同的服务可以相对独立地通信和协作,实现松散耦合。这使得系统更易于维护和扩展。
  4. 技术异构性: SOA支持不同技术栈的应用程序进行集成,使得不同系统能够互操作,从而降低了技术异构性带来的挑战。
  5. 可维护性: SOA的模块化和松散耦合特性使得系统更易于维护。对一个服务的修改不会影响其他服务。
  6. 业务解耦: SOA将业务逻辑抽象成服务,实现了业务的解耦。这使得系统更易于维护和理解。

劣势

  1. 复杂性:
    SOA架构涉及多个服务、接口、协议等复杂概念,因此确实需要一些专业人员来进行设计、实施和管理。这可能使得SOA在初期的投入成本较高,特别是对于小规模的项目或团队。

  2. 精细度和严谨性: SOA架构强调服务的精细设计和定义,需要准确的接口规范、消息传递和协议等。这在某些情况下可能使得开发过程相对较慢和复杂。

  3. 高门槛: 由于SOA需要一定的技术和理论背景,以及对分布式系统的了解,因此确实需要懂得复杂概念的专业人员来驾驭。这可能使得SOA不适合所有类型的团队或项目。

  4. 难以推广: 正如你所提到的,SOA在推广方面可能存在一些挑战。它的复杂性和高门槛使得它在普遍应用时面临一些限制。特别是对于小规模的项目或刚起步的团队来说,SOA可能过于繁琐。

  5. 异构性和复杂集成: SOA适用于需要异构大型系统之间复杂集成的场景。然而,确实需要解决不同系统之间的通信和集成问题,这可能涉及消息传递、数据转换等。

SOA和微服务区别

1. 规模和粒度

SOA: SOA关注于将应用程序划分为一组可重用的服务,每个服务代表一个特定的业务功能。服务的粒度相对较大,通常涵盖更广泛的功能领域。

微服务架构: 微服务架构将应用程序拆分成更小的、自治的微服务,每个微服务专注于一个特定的业务功能。微服务的粒度更小,强调单一职责原则。

2. 组织方式

SOA: SOA通常将不同功能组件划分为服务,这些服务可能由同一组织或多个组织共同开发和维护。SOA强调服务的重用和互操作性

微服务架构: 微服务架构强调将应用程序的不同部分划分为独立的、自治的微服务,每个微服务可以由不同的团队开发和管理。
每个微服务都是独立的服务,有自己的数据存储和业务逻辑

3. 通信和协作

SOA: SOA中的服务通过定义的接口和协议进行通信。通常使用SOAP、REST等协议。

微服务架构: 微服务通过API进行通信,可以使用HTTP、RPC等协议。微服务之间的通信更为轻量级。

4. 依赖和部署

SOA: SOA中的服务可能存在相互依赖,多个服务可以共用相同的服务总线ESB。服务可以在不同的部署单元中。

微服务架构: 微服务是自治的,每个微服务可以独立部署和运行。微服务强调独立的数据存储,每个微服务可以有自己的数据库。

5. 管理和治理

SOA: SOA需要强调服务的管理和治理,包括服务注册与发现、安全性、版本控制等。

微服务架构: 微服务架构也需要管理和治理,但微服务的独立性可能会减轻一些集中式治理的压力。

6. 技术栈

SOA: SOA没有固定的技术栈,可以使用不同的协议、中间件等。通常会涉及Web服务技术。

微服务架构: 微服务架构通常使用轻量级的技术栈,如HTTP、REST、Docker等。

综上所述,尽管SOA和微服务架构有一些相似之处,但它们的设计原则、粒度、独立性和依赖关系等方面存在明显的差异

总结

SOA 架构过于严谨精密的流程与理论,导致了软件开发的全过程,都需要有懂得复杂概念的专业人员才能够驾驭。

从 SOA 诞生的那一天起,就已经注定了它可以实现多个异构大型系统之间的复杂集成交互,却很难作为一种具有广泛普适性的软件架构风格来推广,注定会被微服务架构所取代。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值