面向服务的体系结构 (Service-Oriented Architecture,SOA)
1、应用角度:它着眼于日常的业务应用,并将它们划分为单独的业务功能和流程,即所谓的服务
2、软件基本原理:一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
1、萌芽阶段
以XML技术为标准
2、标准化阶段
简单对象访问协议 (SOAP)
Web服务描述语言 (WSDL)
通用服务发现和集成协议 (UDDI)
3、成熟阶段
三个重量级规范SCA、SDO、WS-Policy
1、与微服务的区别
- (1)微服务相比于 SOA更加精细,微服务更多地以独立的进程的方式存在,互相之间并无影响;
- (2)微服务提供的接口方式更加通用化,例如HTTP RESTful方式,各种终端都可以调用, 无关语言、平台限制;
- (3)微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合。
微服务是SOA的进一步优化,移除了ESB,减低服务间耦合、服务的异构。
微服务架构是 SOA架构思想的一种扩展,更加强调服务个体的独立性、拆分粒 度更小。
2、SOA参考架构
(1)业务逻辑服务:
1)整合已有应用——应用和信息访问服务
- 可接入服务:通过各种消息通信模式(单向、请求/应答和轮询)将业务逻辑和业务数据包装成企业服务总线可以访问的功能
- 事件发现服务:提供事件通知服务将已有应用和数据中的变化通过事件框架发布到企业服务总线上
2)整合新开发的应用——业务应用服务
- 组件服务:为可重用的组件提供应用的运行时容器管理服务,如对象持久化、组件安全管理和事务管理等
- 核心服务:提供运行时的服务,包括内存管理、对象实例化和对象池、性能管理和负载均衡、可用性管理等
- 接口服务:提供和其他企业系统集成的接口,如其他企业应用,数据库、消息系统和管理框架。
3)整合客户和业务伙伴 (B2C/B2B)——伙伴服务
- 社区服务:用于管理和企业贸易的业务伙伴,支持以交易中心 (Trade Hub) 为主的集中式管理和以伙伴为中心的自我管理。
- 文档服务:用于支持和业务伙伴交换的文档格式,以及交互的流 程和状态管理,支持主流的 RosettaNet、EDI 和 AS1/AS2等
- 协议服务:为文档的交互提供传输层的支持,包括认证和路由等
(2)控制服务
包括实现人、 流 程和信息集成的服务,以及执行这些集成逻辑的能力。
1)数据整合——信息服务
- 联邦服务:提供将各种类型的数据聚合的能力,它既支持关系型 数据,也支持像XML 数据、文本数据和内容数据等非关系型数据。
- 复制服务:提供远程数据的本地访问能力,它通过自动的实时复制和数据转换,在本地维护一个数据源的副本
- 转换服务:用于数据源格式到目标格式的转换,可以是批量的或者是基于记录的。
- 搜索服务:提供对企业数据的查询和检索服务
2)流程整合——流程服务
服务编排、十五服务、人工服务(将人工的活动集成到流程中)
3)用户访问整合——交互服务
交付、体验、资源
(3)连接服务
通过提供企业服务总线ESB提供分布在各种架构元素中 服务间的连接性。
ESB特征
描述服务的元数据和服务注册管理;
在服务请求者和提供者之间传递数据,以及对这些数据进行转换的能力
发现、路由、匹配和选择的能力,以支持服务之间的动态交互,解耦服务请求者和服务提供者。
对安全的支持、服务质量保证、可管理性和负载平衡等。
ESB的核心功能:
(1)提供位置透明性的消息路由和寻址服务。
(2)提供服务注册和命名的管理功能。
(3)支持多种消息传递范型(如请求/响应、发布/订阅等)。
(4)支持多种可以广泛使用的传输协议。
(5)支持多种数据格式及其相互转换。
(6)提供日志和监控功能。
(4)业务创新和优化服务
用于监控业务系 统运行时服务的业务性能,并通过及时了解到的业务性能和变化,采取措施适应变化的市场。
(1)公共事件框架服务:通过一个公共事件框架提 供IT和业务事件的激发、存储和分类等。
(2)采集服务:过基于策略的过滤和相关性分析检测感兴趣的服务。
(3)监控服务:通过事件与监控上下文间的映射,计算和管理业务流 程的关键性能指标 (Key Performance Indicators,KPI)。
(5)开发服务
贯彻整个软件开发生命周期的开发平台,从需求分 析,到建模、设计、开发、测试和维护等全面的工具支持。
(6)IT服务管理
支持业务系统运行的各种基础设施管理能力或 服务,如安全服务、目录服务、系统管理和资源虚拟化。
- (1)安全和目录服务: 企业范围的用户、认证和授权管理, 如单点登录 (SSO)。
- (2)系统管理和虚拟化服务: 用于管理服务 器、存储、网络和其他IT 资源。
3、主要协议和规范
UDDI (统一描述、发现和集成协议)
WSDL 文档以接口集合的形式来描述Web服务, 包含对一组操作和 消息的一个抽象定义
SOAP 在分散或分布式的环境中交换信息的简单的协议,是一个基于XML 的协议
REST规范
1、资源:以资源为中心构建,资源可以是一个订单,也可以是一幅图片
2、表述:描述资源在 Web 中某一个时间的状态
3、状态转移:
应用状态是对某个时间内用户请求会话相关信息的快照,保存在客户端,由客户端自身维护,可以和缓存配合降低服务端并发请求压力。
资源状态在服务端保存,是对某个时间资源请求表述的快照,保证在服务端。
借助HTTP方法来实现,如GET方法、 POST方法、 DELETE方法等。
4、超链接:是通过在页面中嵌入链接和其他资源建立联系,这里的资源可以是文本、图片、文件等
4、设计标准
1、文档标准化
2、通信协议标准化 XML
3、应用程序同一登记与集成
4、服务质量QoS:可靠性、安全性、策略、控制、管理
5、设计原则
1、无状态
2、单一实例:避免功能冗余
3、明确定义的接口:服务的接口由WSDL定义
4、自包含和模块化
5、粗粒度
6、服务间的松耦合
7、重用功能
8、互操作性、兼容和策略声明