系统架构-面向服务架构(SOA)
概述
服务指的是系统对外提供的功能集
从应用的角度定义,可以认为SOA是一种应用框架,将日常业务划分为单独的业务功能和流程(即服务),SOA使用户可以构建、部署和整合这些服务。
从软件的基本原理定义,SOA是一个组件模型,通过将应用程序的不同功能单元(即服务)之间定义良好的接口和契约联系起来。
业务流程是指为了实现某种业务目的所进行的流程或一系列动作
BPEL:面向Web服务的业务流程执行语言,是一种使用Web服务定义和执行业务流程的语言
SOA架构以企业服务总线连接各个系统,是集中式的技术架构,应用服务间相互依赖导致部署复杂,应用间交互使用远程通信,降低了响应速度。
微服务架构是SOA架构的进一步优化,去除了ESB企业服务总线,是一个真正意义上去中心化的分布式架构,降低了微服务之间的耦合程度。
参考架构
以服务为中心的企业集成架构:
连接服务——企业服务总线ESB(Enterprise Service Bus)
ESB的基本特征和能力包括:
- 描述服务的元数据和服务注册管理
- 传递数据,并拥有对数据进行转换的能力
- 发现、路由、匹配和选择的能力,查找对应服务
- 安全支持、服务质量保证、可管理性和负载平衡等
业务逻辑服务
功能:
- 整合已有应用:应用和信息访问服务
- 整合新开发的应用:业务应用服务
- 整合客户和业务伙伴(B2C/B2B):伙伴服务,提供与企业外部的服务连接
控制服务
- 数据整合:信息服务,提供集成数据的能力
- 流程整合:流程服务,完成业务流程的编排、事务、集成人工活动等
- 用户访问整合:交互服务,实现用户访问集成,包括:交付服务、体验服务、资源服务等
开发服务
开发环境和工具中为不同开发者的角色提供的功能。如:建模服务、设计服务、实现服务、测试服务
业务创新和优化服务
以业务性能管理(BPM)技术为核心提供业务事件发布、收集和关键业务指标监控能力,
包括:
- 公共事件框架服务:提供IT和业务事件的激发、存储和分类
- 采集服务:分析感兴趣的服务
- 监控服务:通过监控,计算和管理业务流程的关键性能指标
IT服务管理
为业务流程和服务提供安全、高效和健康的运行环境
协议和规范
最基本的协议包括:UDDI、WSDL和SOAP
UDDI(统一描述、发现和集成协议):用于查找发现服务,使得商业实体能够彼此发现
WSDL(Web服务描述语言):用来描述Web服务和说明如何与Web服务通信的XML语言,描述三个基本属性:服务做什么、如何访问服务、服务位于何处
SOAP:在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议
SOA的设计原则
- 无状态:服务无需任何状态,可以独立运行
- 单一实例:服务只提供单一功能
- 明确定义的接口:长时间稳定,一旦公布,不能随意更改
- 自包含和模块化:服务内部封装了一些活动和组件,服务需要自行管理和恢复
- 粗粒度:服务数量少,消息量大
- 松耦合:服务之间交互频次低,私有数据对使用者不可见
- 重用功能:服务应该是可重用的
- 互操作性、兼容和策略声明:形成完整的声明
SOA的设计模式
服务注册表模式
服务注册:开发者向注册表公布他们制作的服务功能
服务位置:注册表帮助使用者查找符合自身要求的服务
服务绑定: 使用者利用检索到的服务合同来开发代码
企业服务总线模式
由中间件技术实现的支持面向服务矿建的基础软件平台,企业服务总线本质上是一个中间件。
这种交互过程不再是点对点的直接交互模式,而是由事件驱动的消息交互模式(隐式调用)
微服务模式
不再强调传统SOA框架中的ESB,特点:复杂应用解耦、独立、技术选型灵活、容错、松耦合易扩展,常见微服务设计模式:
- 聚合器微服务:聚合器调用多个微服务实现系统应用程序所需功能。一种是将检索到的数据信息进行处理并直接展示;另一种是获取到的数据信息增加业务逻辑处理后,再进一步发布成一个新的微服务
- 链式微服务:收到请求后,返回一个经过合并处理的行营,服务之间形成一条调用链
- 数据共享微服务:当服务之间存在强耦合关系,可能存在多个微服务共享缓存与数据库存储的现象
- 异步消息传递微服务: 将消息写入一个消息队列中,实现业务逻辑以异步方式运行
图片来源于网络