面向服务架构(Service-Oriented Architecture,简称SOA)是一种软件设计和架构模式,它通过定义良好的接口和协议将应用程序的不同功能单元(即服务)进行组合。

基本定义与概念

SOA是一种以松耦合、粗粒度服务组件为核心的系统架构模型。它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。SOA是一个"过度使用术语",对不同的人有不同的含义,但其核心思想是将应用程序分解为多个服务(通常为HTTP服务),这些服务可以分类为不同类型的(例如子系统或层)。

体系结构特点

SOA采用三层体系结构:

  1. 业务集成逻辑层:定义业务流程的整体框架
  2. 服务组件层:包含可重用的功能模块实现
  3. 底层实现层:处理具体技术细节和系统适配

关键特性

  • 松耦合架构:服务使用者仅依赖标准化接口,无需知晓服务的实现技术、位置及内部状态
  • 粗粒度设计:通过减少服务数量(适度规模),服务之间依靠消息交互而不是远程过程调用(RPC)
  • 标准化交互:基于业界统一规范定义服务接口,确保不同系统间的互操作性
  • 位置透明化:服务的位置对使用者透明

设计原则

  1. 无状态,保证独立性
  2. 单一实例,避免冗余
  3. 明确定义接口,稳定明确
  4. 自包含和模块化
  5. 粗粒度
  6. 松耦合
  7. 重用能力
  8. 互操作性,兼容能力

关键技术

  • Web Service:使用WSDL(Web Services Description Language)描述服务接口,通过SOAP或REST协议进行通信
  • ESB(Enterprise Service Bus):作为服务间通信的中间件,提供消息路由、转换、负载均衡和安全支持
  • UDDI(Universal Description, Discovery and Integration):用于服务的发布、发现和集成

SOA-Webservice-UDDI-WSDL-SOAP.svg

与微服务的关系

微服务派生自SOA,但SOA不同于微服务体系结构:

  • SOA中常见大型中央代理、组织级别的中央业务流程协调程序、企业服务总线(ESB)等
  • 在微服务社区中,这些模式被认为是反模式
  • 有些人认为,"微服务架构是做好了的SOA"

应用优势

  • 提升系统对商业环境变化的响应速度
  • 通过复用现有服务组件降低开发成本
  • 增强企业级应用的灵活性和可维护能力
  • 支持异构系统间的无缝集成
  • 整合业务逻辑和业务数据
  • 利用现有的应用程序和系统

应用场景

  • 企业级应用:用于构建企业级应用,特别是需要整合多个不同来源的系统时,如ERP、CRM等系统的集成
  • 云计算:在云环境中,SOA允许不同的云服务之间进行有效的协作和数据交换
  • 微服务架构:微服务是SOA的一种变体,更侧重于服务的轻量级和独立性

参考架构

SOA的参考架构包括六大类服务:

  1. 业务逻辑服务:处理业务逻辑
  2. 控制服务:Controller
  3. 连接服务:ESB
  4. 业务创新和优化服务:监控系统运行
  5. 开发服务:贯穿整个生命周期
  6. IT服务管理:基础设计

面向服务架构是现代软件开发中重要的架构模式,它不仅提高了软件系统的灵活性、可扩展性和可维护性,还促进了不同系统和服务之间的互操作性和集成。