18-面向服务架构设计实践

18-面向服务架构设计实践(第18小时)

软考-系统架构设计师 | 第4篇 架构设计实践知识 出题形式:下午案例分析题(必出 25 分)+ 上午选择题(2-5 分)+ 论文题 分值占比:约 25-30 分(重点!必出案例


0. 考点分析

  • SOA 与微服务对比:粗粒度 vs 细粒度、集中式 vs 去中心化
  • SOA 参考架构 6 大类:业务逻辑服务/控制服务/连接服务/业务创新优化/开发服务/IT 服务管理
  • Web Service 三大协议:UDDI / WSDL / SOAP + REST
  • SOA 8 大设计原则:无状态、单一实例、明确定义接口、自包含模块化、粗粒度、松耦合、重用、互操作
  • 3 大设计模式:服务注册表、企业服务总线(ESB)、微服务
  • 4 种微服务架构模式:聚合器、链式、数据共享、异步消息
  • SOA 实施过程:服务模型 + 业务流程

1. 核心架构知识

1.1 SOA 与微服务对比

维度SOA微服务
服务粒度粗粒度更加精细
存在方式多以应用形式独立的进程
通信方式ESB 重通信、智能路由HTTP RESTful,轻量级
部署倾向于集中式部署分布式去中心化
适用场景企业级,传统业务互联网业务
接口方式WSDL/SOAP 等重量级HTTP RESTful 通用化
高并发一般局限(无调用关系时才有提升)

1.2 SOA 参考架构(IBM WebSphere 6 大类)

类别描述
业务逻辑服务实现业务逻辑的服务和执行能力(业务应用服务、业务伙伴服务、应用和信息资产)
控制服务实现人(People)、流程(Process)、信息(Information)集成的服务
连接服务通过企业服务总线(ESB)实现服务间连接性
业务创新和优化服务监控业务系统运行时服务的业务性能,并采取措施适应市场变化
开发服务贯彻整个软件生命周期,从需求分析到建模、设计、开发、测试、维护
IT 服务管理支持业务系统运行的基础设施管理或服务(安全、目录、系统管理、资源虚拟化)

1.3 SOA 主要协议和规范

1.3.1 三大基础协议

协议含义作用
UDDI统一描述、发现和集成商业实体彼此发现,定义在 Internet 上互相作用
WSDLWeb 服务描述语言XML 语言,描述 Web 服务的 3 个基本属性
SOAP简单对象访问协议分散/分布式环境中交换信息的简单协议,基于 XML

WSDL 描述的 3 个基本属性

  1. 服务做些什么—服务所提供的操作(方法)
  2. 如何访问服务—数据格式以及必要协议
  3. 服务位于何处—协议相关的地址,如 URL

1.3.2 REST 规范

为了让不同的软件/应用程序在任何网络环境下都可以进行信息传递。微服务对外以 REST API 形式暴露给调用者。

REST 4 大核心

核心含义
资源互联网中一切暴露给客户端的事物
表述REST 中用表述描述资源在 Web 中某一时间的状态
状态转移应用状态(客户端)+ 资源状态(服务端)
超链接通过嵌入链接和其他资源建立联系

1.4 SOA 设计的标准要求

标准内容
文档标准化平台独立的自我描述 XML 文档(WSDL)
通信协议标准使用 XML Schema(XSD)定义消息
应用程序统一登记与集成通过 Registry(UDDI)维护
服务质量(QoS)可靠性、安全性、策略、控制、管理

控制语言:BPEL4WS 或 WSBPEL(Web Service Business Process Execution Language)

管理协议:WSDM(Web Services Distributed Management)

1.5 SOA 8 大设计原则

  1. 无状态:避免服务请求者依赖于服务提供者的状态
  2. 单一实例:以高内聚的实现方法,避免功能冗余
  3. 明确定义的接口:WSDL 定义接口,划分公共接口与内部实现
  4. 自包含和模块化:封装稳定、重复出现的活动和组件
  5. 粗粒度:服务数量不大,消息交互而非 RPC,交互频度低
  6. 服务之间的松耦合性:服务使用者看到的是接口
  7. 重用能力:服务可以复用
  8. 互操作性、兼容和策略声明:利用策略定义可配置的互操作语义

1.6 SOA 的作用

主要作用:打破信息孤岛,把应用和资源转换成服务;把这些服务变成标准的服务,形成资源的共享。

1.7 SOA 设计模式(3 大类)

1.7.1 服务注册表模式

支持驱动 SOA 治理的服务合同、策略和元数据的开发、发布和管理。

  • 服务注册:服务提供者向注册表公布功能
  • 服务位置:服务应用开发者查询注册服务
  • 服务绑定:服务消费者利用服务合同开发代码,绑定、调用注册服务

1.7.2 企业服务总线(ESB)模式

提供标准的软件底层架构,各种组件以服务单元方式"插入"到平台运行,以标准消息通信方式交互。

6 大核心功能

  1. 提供位置透明性的消息路由和寻址服务
  2. 提供服务注册和命名的管理功能
  3. 支持多种消息传递范型(请求/响应、发布/订阅)
  4. 支持多种传输协议
  5. 支持多种数据格式及其相互转换
  6. 提供日志和监控功能

1.7.3 微服务模式

将大型单个应用或服务拆分成多个微服务,可扩展单个组件而不是整个应用程序堆栈,从而满足服务等级协议。

5 大特点

  1. 复杂应用解耦:单一模块应用分解为多个微服务,保持总体功能不变
  2. 独立:微服务在系统软件生命周期中是独立开发、测试、部署的
  3. 技术选型灵活:去中心化,每个团队可选择合适的技术
  4. 容错:故障隔离在单个服务中,其他微服务可重试、平稳退化
  5. 松耦合,易扩展:每个服务之间松耦合,可独立扩展

1.8 4 种微服务架构模式方案

模式描述
聚合器微服务聚合器充当流程指挥者,调用多个微服务实现系统所需功能
链式微服务收到请求后,发生多个服务间的嵌套递归调用,返回合并处理的响应
数据共享微服务适用于从单体到微服务的过渡阶段,服务间存在强耦合(如共享缓存与数据库)
异步消息传递微服务对不必同步运行的业务逻辑,使用消息队列代替 REST 实现请求、响应

1.9 微服务架构面临的问题与挑战

  1. 服务发现与服务调用链跟踪变得困难
  2. 很难实现传统数据库的强一致性,转而追求最终一致性

1.10 构建 SOA 应注意的问题

原有系统集成需求

  • 应用程序集成的需求
  • 终端用户界面集成的需求
  • 流程集成的需求
  • 已有系统信息集成的需求

服务粒度控制

  • 暴露在系统外部的服务推荐使用粗粒度的接口
  • 相对较细粒度的服务接口通常用于企业系统架构的内部

无状态服务设计:SOA 架构中的服务应该是无状态的,不应依赖于其他服务的上下文和状态。

1.11 SOA 实施过程

选择 SOA 解决方案的 3 个方面

  1. 尽量选择能进行全局规划的方案
  2. 选择时充分考虑企业自身的需求
  3. 从平台、实施等技术方面进行考察

业务流程分析

  1. 建立服务模型:自顶向下分解法、业务目标分析法、自底向上分析法
  2. 建立业务流程:建立业务对象(实体、过程、事件等)→ 建立服务接口 → 建立服务流程

1.12 实践案例

案例 1:银行核心系统 SOA 改造

  • 业务领域拆分为账户、存款、贷款、支付、风险等服务
  • 通过 ESB 集成遗留系统
  • 使用 BPEL 编排业务流程

案例 2:电商系统的微服务化

  • 拆分为商品、订单、库存、支付、用户、推荐 6 大微服务
  • Spring Cloud Alibaba(Nacos/Sentinel/Seata)
  • 通过 Feign + Ribbon 实现服务调用
  • 异步消息用 RocketMQ

2. 关键概念速查

概念定义/说明常见考点
SOAService-Oriented Architecture面向服务架构
WSDLWeb Services Description Language描述 Web 服务的 XML
UDDIUniversal Description Discovery and Integration服务注册与发现
SOAPSimple Object Access Protocol简单对象访问协议
RESTRepresentational State Transfer资源表述性状态转移
ESBEnterprise Service Bus企业服务总线
BPELBusiness Process Execution Language业务流程执行语言
WSDMWeb Services Distributed ManagementWeb 服务分布式管理
XSDXML Schema DefinitionXML 模式定义
RESTful满足 REST 设计约束的架构资源+表述+状态转移+超链接
聚合器模式Aggregator指挥者调用多个微服务
链式模式Chained服务嵌套递归调用
数据共享Shared Data过渡阶段共享缓存/DB
异步消息Asynchronous MessagingMQ 代替 REST
粗粒度Coarse-grained外部接口推荐
细粒度Fine-grained内部接口使用
DSSData Storage Segregation数据存储隔离

3. 典型例题(案例分析题)

例题 1:选择题(陷阱题)

题目:下列关于 SOA 与微服务的描述,错误的是( )。

A. 微服务相比于 SOA 更加精细,微服务更多地以独立的进程的方式存在,互相之间并无影响 B. 微服务提供的接口方式更加通用化,例如 HTTP RESTful 方式,各种终端都可以调用 C. 微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合 D. 微服务更容易实现出高并发的特性,有助于实现互联网业务的秒杀促销活动

参考答案D 解析:微服务在实现高并发方面是局限的。只有没有调用关系的微服务,相对于单体服务来说,才有并发性的提升。


例题 2:选择题

题目:下列选项( )不是关于 SOA 的服务架构。

A. 业务逻辑服务 B. 中间件服务 C. 连接服务 D. 控制服务

参考答案B 解析:SOA 的参考架构包括 6 类:业务逻辑服务、控制服务、连接服务、业务创新和优化服务、开发服务、IT 服务管理。没有"中间件服务"


例题 3:选择题

题目:WSDL 规范描述了 Web 服务的 3 个基本属性:( )。

A. 服务做些什么 / 如何访问服务 / 服务位于何处 B. 服务做些什么 / 如何调用服务 / 服务性能 C. 服务接口 / 数据格式 / 调用方式 D. 服务可用性 / 数据格式 / 服务位置

参考答案A 解析

  • 服务做些什么:服务所提供的操作(方法)
  • 如何访问服务:数据格式以及必要协议
  • 服务位于何处:协议相关的地址,如 URL

例题 4:选择题

题目:SOA 的设计原则为无状态、单一实例、明确定义的接口、( )、粗粒度、服务之间的松耦合性、重用能力、互操作性。

A. 复用性和构件化 B. 自包含和模块化 C. 独立性和构件化 D. 隔离性和归一化

参考答案B 解析:SOA 8 大设计原则之一是自包含和模块化。


例题 5:选择题

题目:微服务架构将一个大型的单个应用或服务拆分成多个微服务……每个服务可以( )。

A. 独立进行开发、管理、迭代 B. 独立进行部署、运维、升级 C. 独立进行测试、交付、验收 D. 独立进行发布、发现、访问

参考答案A 解析:微服务围绕业务领域拆分,每个服务可以独立进行开发、管理和迭代


4. 论文素材

本章是论文题出题范围,以下 3 个题目方向可以重点准备:

  1. 论面向服务架构(SOA)在企业级应用系统集成中的应用

    • 写作要点:ESB 作用、6 大服务类型、UDDI/WSDL/SOAP 协议应用
    • 实战案例:银行/电信系统集成项目
  2. 论微服务架构的设计与实践

    • 写作要点:服务拆分原则、4 种微服务模式选择、最终一致性
    • 实战案例:电商中台化改造
  3. 论 SOA 与微服务架构的对比与选型

    • 写作要点:粗细粒度、集中/去中心化、ESB 治理
    • 实战案例:传统企业 → 互联网企业的架构演进

5. 高频考点

  1. SOA 与微服务对比:每年必出,重点是高并发的局限性
  2. SOA 6 大服务类型:易混淆,需逐字记忆
  3. WSDL 3 大属性:服务做些什么/如何访问/位于何处
  4. SOA 8 大设计原则:送分题,区分"自包含和模块化"
  5. ESB 6 大核心功能:经常考简答
  6. 4 种微服务架构模式:聚合器/链式/数据共享/异步消息
  7. SOA 实施的 3 方面 + 业务流程分析 2 方面:综合题
  8. REST 4 大核心:资源/表述/状态转移/超链接
使用 Hugo 构建
主题 StackJimmy 设计