第15章 面向服务架构

核心知识点

1. SOA 定义(两种视角)

  • 应用角度:一种应用框架,将业务划分为单独的服务,构建、部署和整合服务无需依赖应用程序和平台
  • 软件原理角度:一个组件模型,通过定义良好的接口和契约联系不同功能单元,接口独立于硬件平台、操作系统和编程语言

2. SOA 关键特征

  • 粗粒度:服务粒度比对象/组件更粗
  • 松耦合:服务之间通过精确定义接口通信
  • 可复用:服务可在不同场景中复用
  • 互操作:跨平台、跨语言

3. Web Service 三剑客

| 技术 | 作用 | 类比 | |------|------|------| | SOAP | 交换 XML 编码信息的轻量级协议 | 传输通道 | | WSDL | 描述 Web 服务的接口 | 服务说明书 | | UDDI | 服务的注册、发现和集成 | 黄页电话簿 |

4. Web Service 三种角色

  1. 服务提供者:发布服务到注册中心
  2. 服务注册中心:中介,可有可无
  3. 服务请求者:查找并绑定服务

5. 服务注册表三个功能

  1. 服务注册:公布服务功能
  2. 服务位置:查询和发现服务
  3. 服务绑定:编写代码调用注册的服务

6. BPEL(业务流程执行语言)

  • 全称:Business Process Execution Language for Web Services
  • 作用:通过组合、编排和协调 Web Service 实现业务流程
  • 特点:将多个 Web Service 组合成新的复合服务(从外部看和单个 Service 一样)

7. 企业服务总线(ESB)⭐必考

  • 本质:一根管道,连接各个服务节点
  • 核心功能
    1. 消息路由
    2. 协议转换
    3. 数据格式转换
    4. 服务注册与发现
    5. 安全控制(认证、授权、加密)
    6. 监控与管理
    7. 负载均衡
  • 高级能力:服务质量保证、可管理性
  • 特点
    • SOA 的一种实现方式
    • 描述服务的元数据和服务注册管理
    • 发现、路由、匹配和选择的能力
    • 支持同步模式、异步模式
    • 解耦服务请求者和服务提供者

8. SOA 参考架构(六大类服务)

  1. 业务逻辑服务:已有应用整合(可接入服务、事件发现服务)、新应用(组件服务、核心服务、接口服务)、伙伴服务(B2B/B2C)
  2. 控制服务:信息服务(联邦/复制/转换/搜索)、流程服务(编排/事务/人工)、交互服务(交付/体验/资源)
  3. 连接服务:企业服务总线
  4. 业务创新和优化服务:监控业务性能
  5. 开发服务:建模、设计、实现、测试
  6. IT 服务管理:基础设施管理

9. SOA 与微服务的区别

| 维度 | SOA | 微服务 | |------|-----|--------| | 粒度 | 粗粒度 | 更精细 | | 部署 | 集中式(ESB) | 去中心化 | | 接口 | SOAP/XML | HTTP RESTful | | 数据库 | 共享数据库 | 独立数据库 | | 通信 | 通过 ESB | 直接调用/API Gateway | | 耦合度 | 较高 | 更低 | | 适用场景 | 企业内部集成 | 互联网分布式 |

10. SOA 成熟度三阶段

  1. 萌芽阶段(1990s末-2000s初):XML 技术标志
  2. 标准化阶段(2000+):SOAP、WSDL、UDDI 三剑客
  3. 成熟应用阶段(2005+):SCA/SDO/WS-Policy 规范

11. 软件架构复用与 DSSA

  • 软件产品线:共享公共特性集的一组软件密集型系统
  • 复用类型:机会复用(开发中发现就复用)vs 系统复用(开发前规划)
  • DSSA:特定领域软件架构
    • 三个基本活动:领域分析(→领域模型)、领域设计(→DSSA)、领域实现(→可重用信息)
    • 四种角色:领域专家、领域分析人员、领域设计人员、领域实现人员
    • 三层次模型:领域开发环境 → 领域特定应用开发环境 → 应用执行环境
  • ABSD:基于架构的软件开发
    • 架构驱动,业务+质量+功能需求组合驱动
    • 用例描述功能需求,质量属性场景描述质量需求
    • 视角和视图描述架构

真题考点映射

| 年份 | 考点 | 题型 | |------|------|------| | 2024下 | SOA 架构设计 | 论文 | | 2023下 | ESB 功能与特点 | 案例(25分) | | 2021下 | 企业集成平台 | 论文 | | 2020上 | 企业集成架构设计 | 论文 |

易错点/陷阱

  • UDDI 是注册中心标准,不是传输协议
  • WSDL 描述服务接口,不是传输格式
  • SOAP 基于 XML,不是 JSON
  • ESB 是 SOA 的一种实现,不是替代品
  • 微服务去除了 ESB,但可以用 API Gateway 替代
  • DSSA 的领域分析产出领域模型(不是 DSSA 本身),领域设计产出 DSSA
  • ABSD 用质量属性场景描述质量需求(不是用例)

案例分析模板

题型:ESB 架构设计(高频)

答题框架

  1. ESB 功能列举:消息路由、协议转换、数据转换、服务注册发现、安全控制、监控管理、负载均衡
  2. ESB vs 传统集成方式
    • 传统点对点:N 个系统需要 N(N-1)/2 个连接
    • ESB:N 个系统只需 N 个连接到总线
    • ESB 支持异构系统、灵活扩展
  3. 基于 ESB 的架构设计:画图展示服务提供者 → ESB → 服务请求者

题型:SOA vs 微服务对比

答题框架: 从粒度、部署、接口、数据、通信、耦合度六个维度对比

论文素材

  • 可写主题:SOA 架构设计、ESB 集成、企业服务集成、微服务架构
  • 项目场景
    • 企业内部多个异构系统集成
    • 政务系统服务化改造
    • 从 SOA 到微服务的架构演进
  • 论述要点
    • 服务拆分策略与边界确定
    • ESB 的设计与实现
    • 服务治理(注册发现、路由、安全)
    • 实际效果与经验教训