🏠 首页›第二梯队 · 案例选答专题 · 第 18 小时 · 面向服务架构 SOA 与微服务

SOA 与微服务架构

选择 2~5 分案例 25 分论文高频
📄 教材出处 · 第 18 小时《SOA》 (书第 151–159 页) ▸ 查看原文摘录 打开教材 PDF ↗
第 151 页 ↗面向服务架构设计理论与实践 18.0 章节考点分析 主要学习面向服务架构设计理论与实践。
第 152 页 ↗【导读小贴士】 在面向服务的体系结构(Service-Oriented Architecture,SOA)中,服务的概念有了延伸,泛 指系统对外提供的功能集。
第 153 页 ↗SOA架构与微服务架构的对比如图18.2所示。
第 154 页 ↗ 18.4 SOA 主要协议和规范 Web 服务最基本的协议包括 UDDI、WSDL、SOAP,通过它们可以提供直接而又简单的 Web Service支持,如图18.3所示。
第 155 页 ↗面向服务架构设计理论与实践 147 18.5 SOA 设计的标准要求 (1)文档标准化。
第 156 页 ↗ 18.7 SOA 的设计模式 1.服务注册表模式 服务注册表支持驱动SOA治理的服务合同、策略和元数据的开发、发布和管理。

知识点目录(共 6 项)

  1. SOA 概念与特征:松耦合 / 粗粒度 / 标准化契约;SCA / SDO;发展历史
  2. SOA 参考架构:服务提供者 / 消费者 / 注册中心三角关系
  3. 核心协议栈:SOAP(消息)/ WSDL(描述)/ UDDI(注册发现);BPEL 编排
  4. ESB 企业服务总线的作用与组成
  5. SOA 设计原则与设计模式(服务注册表等);实施过程与治理
  6. SOA vs 微服务对比:粒度 / 通信(ESB vs REST)/ 数据管理 / 部署治理

知识点详解

一、SOA 的相关概念

SOA 定义:SOA 是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口采用中立方式定义,独立于实现服务的硬件平台、操作系统和编程语言,使构建在各种系统中的服务能以统一和通用的方式交互。

业务流程与 BPEL:业务流程是为实现某种业务目的的行为所进行的流程或一系列动作。BPEL(业务流程执行语言)用于组合、编排和协调 Web 服务,自上而下地实现 SOA——将现有 Web Services 按要求的业务流程整理成一个新的 Web Services,对外看起来和单个 Service 一样。

二、SOA 的发展历史(三阶段)

阶段标志说明
① 萌芽阶段XML定义文档元数据,实现企业内部/之间电子数据交换,规定服务之间及内部数据交换的格式和结构
② 标准化阶段SOAP / WSDL / UDDI国际标准和规范:简单对象访问协议、Web 服务描述语言、通用服务发现和集成协议
③ 成熟应用阶段SCA / SDO / WS-Policy三个重量级规范;SCA 和 SDO 构成 SOA 编程模型的基础,WS-Policy 建立组件间安全交互规范
💡 记忆:"X 萌芽、SWU 定标准、SSW 成熟"——XML → SOAP/WSDL/UDDI → SCA/SDO/WS-Policy。

三、SOA 与微服务的区别(必考对比)

维度SOA微服务
粒度较粗(企业级服务)更加精细,多以独立进程方式存在,互相之间并无影响
接口方式WSDL/SOAP 等标准化契约接口更通用化,如 HTTP RESTful,各种终端都可调用,无关语言、平台限制
通信方式依赖 ESB 企业服务总线轻量通信(REST/RPC),去中心化
部署集中式集成倾向分布式去中心化部署,适合互联网业务场景
数据管理可共享数据库数据存储隔离(DSS),每服务私有数据经自身 API 访问
⚠️ 真题陷阱:"微服务更容易实现高并发特性,有助于秒杀促销"——错。微服务在实现高并发方面是有局限的:只有没有调用关系的微服务,相对于单体服务来说才有并发性的提升。

四、SOA 参考架构(IBM 六大类服务)

IBM WebSphere 业务集成参考架构是典型的以服务为中心的企业集成架构,划分为 6 大类:

服务类职责
① 业务逻辑服务实现业务逻辑的服务和执行能力:业务应用服务、业务伙伴服务、应用和信息资产
② 控制服务实现人(People)、流程(Process)、信息(Information)集成的服务及执行能力
③ 连接服务通过提供 ESB,实现分布在各种架构元素中服务间的连接性
④ 业务创新和优化服务监控业务系统运行时服务的业务性能,及时了解性能与变化、采取措施适应市场
⑤ 开发服务贯彻整个软件开发生命周期的开发平台:需求分析→建模→设计→开发→测试→维护
⑥ IT 服务管理支持业务系统运行的基础设施管理:安全服务、目录服务、系统管理、资源虚拟化
💡 记忆口诀:"业控连创发 IT"(业务逻辑、控制、连接、创新优化、开发、IT 管理六服务)。

五、SOA 主要协议栈

服务消费者 调用方 / 客户端 服务注册中心 UDDI 注册与发现 服务提供者 发布服务 / WSDL 查询 返回服务描述 绑定并调用服务(SOAP 消息交互) SOAP 消息 WSDL 描述 UDDI 注册
图 1 Web 服务三角关系:注册(UDDI)→ 发现(查询)→ 绑定调用(SOAP)
协议全称作用
SOAPSimple Object Access Protocol 简单对象访问协议在分散或分布式环境中交换信息的简单协议,基于 XML
WSDLWeb Services Description Language Web 服务描述语言描述 Web 服务和说明如何与 Web 服务通信的 XML 语言,描述服务 3 个基本属性
UDDIUniversal Description, Discovery and Integration 统一描述、发现和集成包含服务描述与发现的标准规范,使商业实体彼此发现、定义交互方式、在全球注册体系架构中共享信息
BPELBusiness Process Execution Language组合、编排和协调 Web 服务,实现业务流程整合
REST资源表述性状态转移微服务对外以 REST API 形式暴露;遵循 REST 设计思想与约束的架构统称 RESTful

WSDL 描述的 3 个基本属性(必背):① 服务做些什么——服务提供的操作(方法);② 如何访问服务——交互的数据格式及必要协议;③ 服务位于何处——协议相关地址(如 URL)。

REST 四要素:资源(一切暴露给客户端的事物)、表述(描述资源在某时刻的状态)、状态转移(应用状态存客户端 / 资源状态存服务端)、超链接(页面嵌入链接建立联系)。

六、ESB 企业服务总线

ESB 提供一种标准的软件底层架构,各种程序组件能以服务单元方式"插入"到该平台运行,组件间以标准消息通信方式交互。核心功能:

七、SOA 设计标准要求与设计原则

设计标准要求 4 条:① 文档标准化(平台独立的自我描述 XML 文档,WSDL 是描述服务的标准语言);② 通信协议标准(消息用 XML Schema / XSD 定义);③ 应用程序统一登记与集成(通过扮演目录列表角色的登记处 Registry 维护,UDDI 是登记标准);④ 服务质量 QoS:可靠性(仅送一次/最多一次/重复过滤/保证传送)、安全性、策略(如要求 Kerberos 标示)、控制(BPEL4WS/WSBPEL)、管理(WSDM)。

SOA 的作用:打破信息孤岛,把应用和资源转换成服务,形成资源共享。

SOA 设计原则 8 条(必背,填空高频):

💡 八大原则:① 无状态(避免请求者依赖提供者状态);② 单一实例(高内聚避免功能冗余);③ 明确定义的接口(WSDL 定义,指明公共接口与内部实现的界线);④ 自包含和模块化(封装稳定、重复出现的活动,独立部署/版本控制/自我管理恢复);⑤ 粗粒度(依靠消息交互而非 RPC,消息量大、交互频度低);⑥ 服务间松耦合(位置、实现技术、当前状态对使用者不可见);⑦ 重用能力;⑧ 互操作性、兼容和策略声明。

八、SOA 设计模式

1. 服务注册表模式——支持驱动 SOA 治理的服务合同、策略和元数据的开发、发布和管理。三步:服务注册(提供者公布功能)→ 服务位置(开发者查询注册表寻找符合要求的服务)→ 服务绑定(消费者利用检索到的合同开发代码、绑定调用)。

2. 企业服务总线模式——见上文 ESB 六大核心功能。

3. 微服务模式——将大型单体应用拆分成多个微服务,可扩展单个组件而非整个应用堆栈,满足 SLA。围绕业务领域拆分,每个服务可独立进行开发、管理和迭代,彼此用统一接口交流。特点:① 复杂应用解耦;② 独立(独立开发/测试/部署);③ 技术选型灵活(去中心化,按业务选择体系架构与技术);④ 容错(故障隔离在单个服务,重试、平稳退化实现应用层容错);⑤ 松耦合易扩展。

4. 微服务架构模式方案 4 种:

模式说明
聚合器微服务聚合器充当流程指挥者,调用多个微服务实现系统所需功能
链式微服务收到请求后发生多个服务间的嵌套递归调用,返回合并处理的响应
数据共享微服务适用于单体→微服务的过渡阶段,允许服务间强耦合(共享缓存与数据库)
异步消息传递微服务对不必同步运行的业务逻辑用消息队列代替 REST,加快响应速度
⚠️ 微服务面临的挑战:① 服务发现与服务调用链跟踪变得困难;② 很难实现传统数据库的强一致性,转而追求最终一致性。

九、构建 SOA 注意问题与实施过程

注意问题:① 原有系统架构中的集成需求:应用程序集成、终端用户界面集成、流程集成、已有系统信息集成;② 服务粒度控制:暴露给系统外部的服务用粗粒度接口,较细粒度接口用于企业系统架构内部;③ 无状态服务设计:具体服务应是独立、自包含的请求,不依赖前一个请求的状态和其他服务的上下文。

实施过程:① 选择 SOA 解决方案三方面——尽量选择能全局规划的方案、充分考虑企业自身需求、从平台/实施等技术方面考察;② 业务流程分析——建立服务模型(自顶向下分解法、业务目标分析法、自底向上分析法三种方式)+ 建立业务流程(建立业务对象、服务接口、服务流程)。

💡 本节框架:"一个定义 + 三个阶段 + 三角协议 + 六类服务 + 八大原则 + 三种模式"。SOA 核心是"中立接口 + 松耦合",微服务是它的精细化演进——粗粒度走 ESB,细粒度走 REST。