软考系统架构设计师 - 第 20 章 面向服务的架构

涉及单选题和案例分析题,3-6分。已阅第20小时和教程。

服务是一个由服务提供者提供的,用于满足使用者请求的业务单元。

在SOA中,服务的概念有了延伸,泛指系统对外提供的功能集。

20.1 SOA的相关概念

1. SOA的定义

SOA,Service-Oriented Architecture,面向服务的架构。

从应用和基本原理角度看,有两种业界公认的标准定义:

  • 应用角度:SOA是一种应用框架,它着眼于日常的业务应用,并将它们划分为单独的业务功能和流程,即所谓的服务。
  • 基本原理角度:SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。

2. 业务流程与BPEL

业务流程是指为了实现某种业务目的的行为所进行的流程或一系列动作。在计算机领域,业务流程代表的是某一个问题在计算机系统内部得到解决的全部流程。

业务系统建模时,需要用到一种特定的、简洁的语言来专门描述计算机系统的业务流程,这促使了BPEL的产生。

BPEL(Business Process Execution Language For Web Services),面向Web Service的业务流程执行语言,它是一种使用Web Service定义和执行业务流程的语言。使用BPEL,用户可以通过组合、编排和协调Web Service自上而下地实现面向服务的架构。

20.2 SOA的发展历史

SOA的发展始于国外,其经历如下三个阶段:

  • 萌芽阶段:以XML技术为标志。XML是SOA的基石。XML规定了服务之间以及服务内部数据交换的格式和结构。XSD Schems保障了消息数据的完整性和有效性,而XSLT使得不同的数据表达能通过Schema映射而相互通信
  • 标准化阶段:这一阶段出现了三个著名的Web Service标准和规范:SOAP、WSDL和UDDI
  • 成熟应用阶段:各厂商共同努力制定中立的SOA标准,其成果体现在三个重量级规范上:SCA/SDO/WS-Policy。SCA和SDO构成了SOA编程模型的基础,而WS-Policy建立了SOA组件之间安全交的规范

20.3 SOA的参考架构

1. SOA的参考架构

IBM的Websphere业务集成参考架构是典型的以服务为中心的企业集成架构。

以服务为中心的企业集成采用“关注点分离(Separation of Conern)”的方法规划企业集成中的各种架构元素,同时从服务视角规划每种架构元素提供的服务,以及服务如何被组合在一起完成某种类型的集成。这里架构元素提供的服务既包括狭义的服务(WSDL描述),也包括广义的服务(某种个能力)。

从服务为中心的视角来看,企业集成的架构按上图所示的方式分为6大类:

  • 业务逻辑服务(Business Logic Service):实现业务逻辑的服务,包括业务应用服务(Business Application Service)、业务伙伴服务(Partner Service)以及应用和信息资产(Application and Informatication Asset)
  • 控制服务(Control Sevrice):包括实现人(People)、流程(Process)和信息(Information)集成的服务,以及执行这些集成逻辑的能力
  • 连接服务(Connectivity Service):通过提供企业服务总线提供分布在各种架构元素中服务间的连接性
  • 业务创新和优化服务(Business invocation and Optimization Service):用于监控服务性能,并采取措施适应变化的市场。
  • 开发服务(Development Service):贯穿整个软件开发生命周期的开发平台,从头到尾(需求分析,.....,维护)的全面支持
  • IT服务管理(IT Service Management):支持业务系统运行的各种基础设施管理的能力,如安全服务、目录服务、系统管理等

2. 业务逻辑服务

整合已有应用 - 应用和信息访问服务:实现对已有应用和信息的集成,使用各种适配器技术将现有系统中的业务逻辑和数据包装成ESB支持的协议和数据格式。在参考架构中,主要有两类访问服务:可接入服务和事件发现服务。

整合新开发的应用 - 业务应用服务:在参考架构中,有三类业务应用服务,组件服务、核心服务、接口服务。

整合客户和业务伙伴(B2C/B2B) - 伙伴服务:因为业务伙伴系统的异构性,伙伴服务需要支持多种传输协议和数据格式。在参考架构中,提供如下服务:社区服务、文档服务、协议服务。

3. 连接服务 - 企业服务总线

企业服务总线(Enterprise Service Bus,ESB)是过去消息中间件的发展,采用了“总线”这样一种模式来管理和简化应用之间的集成拓扑结构,以广为接受开放标准为基础来支持应用之间在消息、事件和服务的级别上动态地互联互通。

ESB的基本特征和能力包括:描述服务的元数据和服务注册管理;在服务请求者和提供者之间传递数据,以及对这些数据进行转换的能力,并支持由实践中总结出来的一些模式,如同步、异步模式;发现、路由、匹配和选中的能力,以支持服务之间的动态交互,解耦服务请求者和服务提供者;高级能力,比如对安全的支持、服务质量保证、可管理性、负载均衡等。

典型的企业服务总线:

4. 控制服务

数据整合 - 信息服务:提供集成数据的能力,包括联邦服务、复制服务、转换服务、搜索服务。

流程整合 - 流程服务:提供业务流程集成的能力,包括编排服务、事务服务、人工服务。

用户访问整合 - 交互服务:实现用户访问集成,包括交付服务、体验服务、资源服务。

5. 业务创新和优化

以业务性能管理(Business Process Management,BPM)技术为核心提供业务事件发布、收集和关键业务指标监控能力。其由如下服务组成:

  • 公共事件框架服务(Common Event Infrastructure Service):通过公共事件框架提供IT和业务事件的激发、存储和分类等
  • 采集服务(Collection Service):按策略过滤和相关性分析检测感兴趣的服务
  • 监控服务(Monitoring Service):通过事件与监控上下文映射,计算和管理流程的关键性能指标(KPI,Key Performance Indicator)

6. 开发支持 - 开发服务

开发服务需要提供和服务开发相关的技术:

  • 用于支持以服务为中心的企业集成方法学和建模
  • 用于服务为中心的编程,比如WSDL等

开发环境和工具中为不同开发者的角色提供的功能被称为开发服务。根据开发过程中开发者角色和职责的不同,分为如下4类服务:建模服务、设计服务、实现服务、测试服务。

7. IT服务管理

包括两部分;

  • 安全和目录服务(Security and Directory Service):企业范围的用户、认证和授权管理,比如单点登录(SSO)
  • 系统管理和虚拟化服务(System Management and Virtualization Service):用于管理服务器、存储、网络和其它IT资源

20.4 SOA的主要技术和标准

1. SOA的主要技术和标准

Web Service作为实现SOA中服务的最主要手段。

Web Service相关的标准,大多以WS-作为名称前缀,所以统称为WS-*。

Web Service最基本的协议包括UDDI、WSDL和SOAP,通过它们,可以提供直接而又简单的Web Service支持。

2. UDDI协议

UDDI(统一描述、发现和集成协议)提供了一种服务发布、查找和定位的方法,是服务的信息注册规范,以便被需要该服务的用户发现和使用。UDDI规范描述了服务的概念,同时也定义了一种编程接口。通过UDDI提供的标准接口,企业可以发布自己的服务供其他人查询和调用,也可以查询特定服务的描述信息,并动态绑定到该服务上。

在UDDI技术规范中,主要包括以下三部分内容:

  • 数据模型:是一个用于描述业务组织和服务的XML Schema
  • API:是一组用于查找和发布UDDI数据的方法,UDDI API基于SOAP
  • 注册服务:是SOA中的一种基础设施,对应着服务注册中心的角色

3. WSDL规范

WSDL(Web Service Description Language,Web Service描述语言)是一个用来描述Web Service和说明如何与Web Sevice通信的XML语言。

它是Web Service的接口定义语言,通过WSDL,可描述Web Service的三个基本属性:

  • 服务做什么:服务提供的功能操作
  • 如何访问服务:和服务交互的数据格式及必要协议
  • 服务位于何处:协议相关的地址,如URL

WSDL文档以端口集合的形式描述Web Service,WSDL服务描述包含对一组操作和消息的一个抽象定义,绑定到这些操作和消息的一个具体协议,和这个绑定的一个网络端点规范。

WSDL文档分为两种类型:服务接口、服务实现。

4. SOAP协议

SOAP(Simple Object Access Protocol,简单对象访问协议)定义了服务请求者和服务提供者之间的消息传输规范。SOAP用XML来格式化消息,用HTTP来承载消息。通过SOAP,应用程序可以在网络中进行数据交换和远程过程调用(RPC)。

SOAP主要包括4个部分:

  • SOAP封装(Envelop):定义了一个描述消息中的内容是什么,是谁发送的,谁应当接收并处理它以及如何处理它们的框架
  • SOAP编码规则(Encoding Rules):用于表示应用程序需要使用的数据类型的实例
  • SOAP RPC表示(RPC Representation):表示远程过程调用和应答的协定
  • SOAP绑定(Binding):使用底层协议交换信息

SOAP的两个主要设计目标:简单性、可扩展性。

基本协议无法保证企业计算需要的安全性和可靠性,所以需要增加一些协议,比如WS-Security、WS-Reliability、WS-Policy等。

20.5 SOA的特性

1. 服务品质

服务品质(Quality of Service,QoS),其有相关的标准:

  • 可靠性:比如“仅且仅仅传送一次”、“最多传送一次”、“重复消息过滤”、“保证消息传送”等特性。使用WS-Reliability和WS-ReliableMessaging标准实现。
  • 安全性:该规范包括认证交换、消息完整性和消息保密。比如SAML、WS-Securiy等
  • 策略:有时要求服务消费者与某种策略通信。WS-Policy用来标准化服务消费者和服务提供者之间的策略通信。
  • 控制:BPEL4WS或者WSBPEL(Web Service Business Process Execution Language)是用来控制这些服务的语言,。比如整合后实现异步通信、并行处理、数据转换等。
  • 管理:WSDM(Web Service for Distributed Management)的制定,使任何根据WSDM实现的服务都可以由一个WSDM适应(WSDM-compliant)的管理方案来管理。

20.6 SOA的作用

1. 什么叫“信息孤岛”?

一个企业内部,可能存在不同的应用系统,开发时间各不相同,开发工具/语言各不相同,一个业务很难有效地调用所有的应用系统。用简单的语言描述,这些应用是孤立的,所以称之为“信息孤岛”。

2. 早期解决“信息孤岛”的方案

采用EAI(企业应用集成),为了保证所以应用能够互通互用,每个应用都需要一个EAI Server来对应。就好像EAI Server是个“翻译”,让每两个应用之间可以通话。但是,这样会导致EAI Server呈几何倍数增长。比如,一个企业有两个应用,就需要一个翻译;企业有三个应用,就需要三个翻译;有4个应用的时候,就需要6个翻译;有5个应用,就需要10个翻译。

显然,EAI并不是解决“信息孤岛”的妥善方法。

3. SOA打破“信息孤岛”

SOA对于实现企业资源共享,打破“信息孤岛”的步骤如下:

  • 把应用和资源转换成服务
  • 把这些服务变成标准的服务,形成资源的共享。

20.7 SOA设计原则

SOA架构中,继承了面向对象的相关原则,比如封装。

结构上,服务总线是SOA的架构模式之一。

关于服务,常见的设计原则如下:

  • 无状态:服务请求者不依赖服务提供者的状态
  • 单一实例:避免功能冗余
  • 明确定义的接口:接口用WSDL定义,WS-Policy描述服务规约,XMLSchema定义交换的消息格式
  • 自包含和模块化:独立模块,独立部署、版本控制等
  • 粗粒度:服务数量不应该太大,通常消息量比较大,服务之间交互频度较低
  • 服务之间的松散耦合:服务使用者只能看到服务接口,其位置、实现技术、当前状态、私有数据等是不可见的。
  • 重用能力
  • 互操作性、兼容和策略声明

20.8 SOA的设计模式

1. 服务注册表(Service Registry)

包含的SOA治理功能:服务注册、服务位置(查询)、服务绑定。

2. 企业服务总线模式(ESB)

ESB是由中间件技术实现的支持面向服务架构的基础软件平台,支持异构环境下的服务以基于消息和事件驱动模式的交互,并且具有适当的服务质量和可管理性。

ESB最大限度上解耦了组件之间的依赖关系,降低了软件系统互联的复杂性。连接在总线上的组件无需了解其他组件和应用系统的位置及交互协议,只需要向ESB发出请求,消息即可获得所需服务。技术人员可以通过开发符合ESB标准的组件(适配器)将外部应用连接到服务总线,实现与其它系统的互操作。同时,ESB以中间件的形式,提供服务容错、负载均衡、QoS保障和可管理功能。

ESB的核心功能如下:

  • 提供位置透明性的消息路由和寻址服务
  • 提供服务注册和命名的管理功能
  • 支持多种消息传递规范(如请求/响应、发布/订阅)
  • 支持多种可以广泛使用的传输协议
  • 支持多种数据格式及其相互转换
  • 提供日志和监控功能

20.9 构建SOA架构时应该注意的问题

1. 原有系统架构中的集成需求

考虑更加具体的集成的类型,主要包括如下几个方面:应用程序集成的需求、终端用户界面集成的需求、流程集成的需求以及已有系统信息集成的需求。

2. 服务粒度的控制

推荐使用粗粒度的接口,而相对较细粒度的服务接口通常用于企业系统架构的内部。

从技术上讲,粗粒度的服务接口可能是一个特定服务的完整执行,而细粒度的服务接口可能是实现这个粗粒度服务接口的具体的内部操作。比如基于SOA架构的网上商城,粗粒度的服务接口是提交订单的操作,而系统内部细粒度的服务可能就是实现提交订单的一系列内部操作,比如创建订单、设置收货地址、更新数据等。

通常,架构师可以使用BPEL来创建由细粒度操作组成的业务流程的粗粒度的服务接口。

3. 无状态的服务设计

什么样的是无状态?实现服务的时候,不依赖前一个请求的状态。也就是说,服务不依赖其它服务的上下文和状态,这就是无状态。

20.10 SOA实施的过程

1. 选择SOA解决方案

选择最佳的方案,是保证SOA实施成功的前提条件。总体来说,必须从以下三个方面进行选择:

  • 尽量选择能进行全局规划的方案:总体规划好
  • 充分考虑企业自身的需求
  • 从平台、实施等技术方面进行考察:用户选择SOA产品和技术,应该从平台的选中、实施方法与途径、供应商的选择三个方面进行考虑。在实施SOA时,CIO应该综合考虑的六方面因素:业务战略与流程、基础架构、构建模块、项目和应用、成本和效益、规划和管理。

2. 业务流程分析

  • 建立服务模型:自顶向下分解法、业务目标分析法、自底向上分析法
  • 建立业务流程:建立业务对象(实体业务对象、过程业务对象、事件业务对象)、建立服务接口、建立业务流程
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页