SOA 定义:SOA 是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口采用中立方式定义,独立于实现服务的硬件平台、操作系统和编程语言,使构建在各种系统中的服务能以统一和通用的方式交互。
业务流程与 BPEL:业务流程是为实现某种业务目的的行为所进行的流程或一系列动作。BPEL(业务流程执行语言)用于组合、编排和协调 Web 服务,自上而下地实现 SOA——将现有 Web Services 按要求的业务流程整理成一个新的 Web Services,对外看起来和单个 Service 一样。
| 阶段 | 标志 | 说明 |
|---|---|---|
| ① 萌芽阶段 | XML | 定义文档元数据,实现企业内部/之间电子数据交换,规定服务之间及内部数据交换的格式和结构 |
| ② 标准化阶段 | SOAP / WSDL / UDDI | 国际标准和规范:简单对象访问协议、Web 服务描述语言、通用服务发现和集成协议 |
| ③ 成熟应用阶段 | SCA / SDO / WS-Policy | 三个重量级规范;SCA 和 SDO 构成 SOA 编程模型的基础,WS-Policy 建立组件间安全交互规范 |
| 维度 | SOA | 微服务 |
|---|---|---|
| 粒度 | 较粗(企业级服务) | 更加精细,多以独立进程方式存在,互相之间并无影响 |
| 接口方式 | WSDL/SOAP 等标准化契约 | 接口更通用化,如 HTTP RESTful,各种终端都可调用,无关语言、平台限制 |
| 通信方式 | 依赖 ESB 企业服务总线 | 轻量通信(REST/RPC),去中心化 |
| 部署 | 集中式集成 | 倾向分布式去中心化部署,适合互联网业务场景 |
| 数据管理 | 可共享数据库 | 数据存储隔离(DSS),每服务私有数据经自身 API 访问 |
IBM WebSphere 业务集成参考架构是典型的以服务为中心的企业集成架构,划分为 6 大类:
| 服务类 | 职责 |
|---|---|
| ① 业务逻辑服务 | 实现业务逻辑的服务和执行能力:业务应用服务、业务伙伴服务、应用和信息资产 |
| ② 控制服务 | 实现人(People)、流程(Process)、信息(Information)集成的服务及执行能力 |
| ③ 连接服务 | 通过提供 ESB,实现分布在各种架构元素中服务间的连接性 |
| ④ 业务创新和优化服务 | 监控业务系统运行时服务的业务性能,及时了解性能与变化、采取措施适应市场 |
| ⑤ 开发服务 | 贯彻整个软件开发生命周期的开发平台:需求分析→建模→设计→开发→测试→维护 |
| ⑥ IT 服务管理 | 支持业务系统运行的基础设施管理:安全服务、目录服务、系统管理、资源虚拟化 |
| 协议 | 全称 | 作用 |
|---|---|---|
| SOAP | Simple Object Access Protocol 简单对象访问协议 | 在分散或分布式环境中交换信息的简单协议,基于 XML |
| WSDL | Web Services Description Language Web 服务描述语言 | 描述 Web 服务和说明如何与 Web 服务通信的 XML 语言,描述服务 3 个基本属性 |
| UDDI | Universal Description, Discovery and Integration 统一描述、发现和集成 | 包含服务描述与发现的标准规范,使商业实体彼此发现、定义交互方式、在全球注册体系架构中共享信息 |
| BPEL | Business Process Execution Language | 组合、编排和协调 Web 服务,实现业务流程整合 |
| REST | 资源表述性状态转移 | 微服务对外以 REST API 形式暴露;遵循 REST 设计思想与约束的架构统称 RESTful |
WSDL 描述的 3 个基本属性(必背):① 服务做些什么——服务提供的操作(方法);② 如何访问服务——交互的数据格式及必要协议;③ 服务位于何处——协议相关地址(如 URL)。
REST 四要素:资源(一切暴露给客户端的事物)、表述(描述资源在某时刻的状态)、状态转移(应用状态存客户端 / 资源状态存服务端)、超链接(页面嵌入链接建立联系)。
ESB 提供一种标准的软件底层架构,各种程序组件能以服务单元方式"插入"到该平台运行,组件间以标准消息通信方式交互。核心功能:
设计标准要求 4 条:① 文档标准化(平台独立的自我描述 XML 文档,WSDL 是描述服务的标准语言);② 通信协议标准(消息用 XML Schema / XSD 定义);③ 应用程序统一登记与集成(通过扮演目录列表角色的登记处 Registry 维护,UDDI 是登记标准);④ 服务质量 QoS:可靠性(仅送一次/最多一次/重复过滤/保证传送)、安全性、策略(如要求 Kerberos 标示)、控制(BPEL4WS/WSBPEL)、管理(WSDM)。
SOA 的作用:打破信息孤岛,把应用和资源转换成服务,形成资源共享。
SOA 设计原则 8 条(必背,填空高频):
1. 服务注册表模式——支持驱动 SOA 治理的服务合同、策略和元数据的开发、发布和管理。三步:服务注册(提供者公布功能)→ 服务位置(开发者查询注册表寻找符合要求的服务)→ 服务绑定(消费者利用检索到的合同开发代码、绑定调用)。
2. 企业服务总线模式——见上文 ESB 六大核心功能。
3. 微服务模式——将大型单体应用拆分成多个微服务,可扩展单个组件而非整个应用堆栈,满足 SLA。围绕业务领域拆分,每个服务可独立进行开发、管理和迭代,彼此用统一接口交流。特点:① 复杂应用解耦;② 独立(独立开发/测试/部署);③ 技术选型灵活(去中心化,按业务选择体系架构与技术);④ 容错(故障隔离在单个服务,重试、平稳退化实现应用层容错);⑤ 松耦合易扩展。
4. 微服务架构模式方案 4 种:
| 模式 | 说明 |
|---|---|
| 聚合器微服务 | 聚合器充当流程指挥者,调用多个微服务实现系统所需功能 |
| 链式微服务 | 收到请求后发生多个服务间的嵌套递归调用,返回合并处理的响应 |
| 数据共享微服务 | 适用于单体→微服务的过渡阶段,允许服务间强耦合(共享缓存与数据库) |
| 异步消息传递微服务 | 对不必同步运行的业务逻辑用消息队列代替 REST,加快响应速度 |
注意问题:① 原有系统架构中的集成需求:应用程序集成、终端用户界面集成、流程集成、已有系统信息集成;② 服务粒度控制:暴露给系统外部的服务用粗粒度接口,较细粒度接口用于企业系统架构内部;③ 无状态服务设计:具体服务应是独立、自包含的请求,不依赖前一个请求的状态和其他服务的上下文。
实施过程:① 选择 SOA 解决方案三方面——尽量选择能全局规划的方案、充分考虑企业自身需求、从平台/实施等技术方面考察;② 业务流程分析——建立服务模型(自顶向下分解法、业务目标分析法、自底向上分析法三种方式)+ 建立业务流程(建立业务对象、服务接口、服务流程)。