(计算机科学与技术专业论文)基于可靠web服务的数据交换平台研究与实现.pdf_第1页
(计算机科学与技术专业论文)基于可靠web服务的数据交换平台研究与实现.pdf_第2页
(计算机科学与技术专业论文)基于可靠web服务的数据交换平台研究与实现.pdf_第3页
(计算机科学与技术专业论文)基于可靠web服务的数据交换平台研究与实现.pdf_第4页
(计算机科学与技术专业论文)基于可靠web服务的数据交换平台研究与实现.pdf_第5页
已阅读5页,还剩53页未读 继续免费阅读

(计算机科学与技术专业论文)基于可靠web服务的数据交换平台研究与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国防科学技术大学研究生院学位论文 图目录 图1 1 点对点数据交换接口繁多8 图1 2 采用数据交换平台后接口明显减少9 图1 3w e b 服务角色、操作和构件1 0 图1 4 w e b 服务协议栈1 0 图2 1 面向m o m 在t c p 仰网络体系结构中的位置1 3 图2 2 基于主题的发布订阅与基于内容的发布订阅的比较1 6 图2 3j m s 应用场景1 7 图2 4s o a p e n v e l o p e 结构1 9 图2 5j m s 编程模式2 1 图2 6s o a p ,n i s 示意图2 2 图2 7s o a i j m s 消息格式2 2 图2 8 m s 2 s o a p h t r p 示意图2 3 图2 9s o a p 2 j m s m r r p 示意图2 4 图2 1 0w s - r e l i a b l e m e s s a g i n g 协议示意图2 5 图3 1 w e b 服务可靠消息模型3 0 图3 2 可靠消息传递示例3 2 图3 3 数据交换平台系统结构图3 3 图3 4 部门间数据交换示意图3 4 图3 5 传输子系统示意图3 5 图3 6s o a p 节点工作流程3 5 图3 7 节点路由、中心路由工作流程3 5 图3 8r 节点的结构设计图3 6 图3 9 客户端发送请求流程3 6 图3 1 0 服务端消息接收流程3 7 图3 儿信息路由的分布部署图3 8 图4 1s o 玎中的s 0 p n i s 绑定框架4 0 图4 2 请求应答划分时序图4 l 图4 3s o a p 消息组成4 2 图4 4 消息类图4 2 图4 5s o a p 消息类图4 3 图4 6s o j t e n g i n e 模块4 6 图4 7s o j t e n g i n e 组件关系图4 7 图4 8j n d i 适配模块类图4 8 图4 9 引擎处理结构图5 0 国防科学技术大学研究生院学位论文 图4 1 0 引擎所有类关系结构图5 l 图4 1 1 中国联通m s s 系统数据交换平台总体示意图5 3 国防科学技术大学研究生院学位论文 表目录 表格2 1 几种w e b 服务可靠性技术的比较2 7 表格4 2 发送消息类4 4 表格4 3 接收消息类4 4 表格4 4 侦听消息类4 5 表格4 5 引擎所有类的列表5 1 独创性声明 本人声明所呈交的学位论文是我本人在导师指导下进行的研究工作及取得的研 究成果尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已 经发表和撰写过的研究成果,也不包含为获得国防科学技术大学或其它教育机构的学 位或证书而使用过的材料与我- n r 作的同志对本研究所做的任何贡献均已在论文 中作了明确的说明并表示谢意。 学位论文题目: 基王互盏婴! 自b 盔鳗熬握塞逸壬鱼丑塞曼塞理 学位论文作者签名:i 点 日期:( ,年- f 月习日 学位论文版权使用授权书 本人完全了解国防科学技术大学有关保留使用学位论文的规定本人授权国 防科学技术大学可以保留并向国家有关部门或机构送交论文的复印件和电子文档,允 许论文被查阅和借阅;可以将学位论文的全部或部分内容编入有关数据库进行检索, 可以采用影印,缩印或扫描等复制手段保存,汇编学位论文 ( 保密学位论文在解密后适用本授权书) 学位论文作者磊:至兰 作者指导教师獬:塞幽 日期:如6 ,年1 月司日 日期:矽5 年7 月y 7 日 国防科学技术大学研究生院学位论文 摘要 目前在政府和企业内部使用的不同业务系统,由于是在不同时期,采用不同的技术标 准和开发平台来建设的,综合集成需求日益突出;本文研究基于w e b 服务技术建立数据交 换平台的相关技术,支持不同业务系统之间的应用集成。论文通过对多种w e b 服务技术的 研究比较,选出一种适合在企业环境下使用的解决办法,依照该方法设计了一个基于可靠 w e b 服务的数据交换平台,在应用中验证该数据交换平台的合理性。 本文的主要工作包括: 1 、基于项目的应用背景要求,研究消息中间件技术的基本原理和w e b 服务的传输协 议;研究对比目前解决w e b 服务可靠性问题的几种相关技术( s o a p j m s 、 j m s 2 s 0 a p h t t p 等) ,分析并总结它们之间的优缺点和典型应用场景。 2 、基于上述研究,本文给出可靠w e b 服务的消息模型及其特点( 即确保消息发送、 减少重复消息和保证消息的按序发送) ,并提出了采用s o a p j m s 技术的数据交换平台的 总体结构及传输子系统的设计。 3 、根据以上的设计,部分实现了基于可靠w e b 服务的数据交换平台,该系统的核心是 s o j t 中间件( s o a po v e r j m st r a n s a c t i o n 的简称) ;论文重点讨论了s o a p j m s 处理器、 s o j t e n g i n e 等组成及实现技术,最后在项目应用中验证该数据交换平台的合理性。 关键词:w e b 服务,可靠性,数据交换,j m s 国防科学技术大学研究生院学位论文 a b s t r a c t t h ev a r i o u sk i n d so fa p p l i c a t i o n sw h i c hw i d e l ye x i s tw i t h i ng o v e r n m e n t sa n de n t e r p r i s e s a l ed e v e l o p e do nd i f f e r e n tp l a t f o r m sb yd i f f e r e n tt e c h n o l o g ys t a n d a r d s t h e yl e a dt om a n y p r o b l e m si n c l u d i n gi n f o r m a t i o ni s l a n da n dm e s s a g e - s h a r i n g t h i sp a p e rl o o k si n t od i f f e r e n t t e c h n o l o g i e sw h i c ha r eu s e dt ob u i l dd a t a - e x c h a n g ep l a t f o mb a s e do nw e bs e r v i c e sa n d a p p l i c a t i o ni n t e g r a t i o nw h i c hs u p p o r td i f f e r e n tb u s i n e s ss y s t e m s b a s e do ne x t e n s i v es t u d yo n d i f f e r e n tw e b s e r v i c e s ,t h i sp a p e rc h o o s e sas o l u t i o nf i tf o ra p p l i c a t i o ni ne n t e r p r i s ee n v i r o n m e n t , a n di na c c o r d a n c ew i t i lt h i ss o l u t i o nd e s i g n sad a t a - e x c h a n g ep l a t f o r mb a s e do nr e l i a b l ew e b s e r v i c e t h er a t i o n a l i t yo f t h i sp l a t f o r mi sp r o v e di np r o j e c ta p p l i c a t i o n m a j o rw o r ko f t h i st h e s i si n c l u d e s : i 、t os t u d y t h e f u n d a m e n t a l s o f m e s s a g e m i d d l e w a r ea n d t r a n s f e r p r o t o c o l o f w e bs e r v i c e s , w es t u d ya n dc o m p a r et h ed i f f e r e n tt e c h n o l o g i e sw h i c hs o l v et h er e l i a b i l i t yi s s u e so fw e b s e r v i c e s ,a n da n a l y z et h e i ra d v a n t a g e sa n dd i s a d v a n t a g e sa n dt h e i rt y p i c a la p p l i c a t i o n s 2 、b a s e do nt h es t u d ya f o r e s a i d ,t op r e s e n tar e l i a b l em e s s a g em o d eb a s e do nw e bs e r v i c e a n di t sf e a t u r e s ( t h a ti si n s u r em e s s a g ed e l i v e r y , r e d u c em e s s a g er e p e t i t i o na n di n s u r et h e s e q u e n c eo fm e s s a g ed e l i v e r y ) ,t op u tf o r w a r dt h e o v e r a l ls t r u c t u r eo f d a t a - e x c h a n g e p l a t f o r m ( b u i l t0 ns o a p j m s ) a n d t h ed e s i g no f 仃a n s f e rs u b s y s t e m 3 、b a s e do nt h ed e s i g na f o r e s a i d , t op a r t i a l l yr e a l i z et h ew e bs e r v i c e s - b a s e dd a t a - e x c h a n g e p l a t f o r mw h o s ec o r ei ss o j tm i d d l e w a r e ( s o j ti ss h o r tf o rs o a po v e rj m st r a n s a c t i o n ) t o d i s c u s ss o a p j m sp r o c e s s o r a s s e m b l ya n dr e a l i z a t i o nt e c h n o l o g yo fs o j te n g i n e ,a n dt o p r o v e t h er a t i o n a l i t yo f t h ed a t a - e x c h a n g e p l a t f o r mi np r o j e c ta p p l i c a t i o n 。 k e yw o r d s :w e bs e r v i c e , r e l i a b i l i t y ,d a t ae x c h a n g e ,j m s 国防科学技术大学研究生院学位论文 第一章绪论 1 1 课题背景 目前由于企业内部的各个业务系统是在不同时期,采用不同的开发方法、技术标准和 设计结构来开发,并且运行在不同平台之上,彼此之间难以进行数据交换和业务协同,企 业内部信息孤岛和业务协同问题日益突出,无法适应新业务发展规律和变化。 主要体现在如下两方面: ( 1 ) 信息孤岛问题 随着企业计算机水平的不断提高,根据业务的需要建设了很多的应用系统,企业内不 同系统间信息共享的要求不断加强。如经营分析系统中的经营分析报表、综合查询系统中 的数据查询服务等,希望能实现应用集成,最后统一由综合管理系统来展现;同时企业希 望通过总部的综合管理系统与各省分公司的系统能够互联互通实现全公司的统一管理,如 总部能迅速下达行政指令到各省分公司,各省分公司也可以访问总部共享的信息。 ( 2 ) 可靠传输问题 在应用系统中,根据实际工作需要,经常要进行数据交换以实现协同工作,比如公文 流转、决策分析报告、人事任命函等,都需要从一个系统传递到另一个或者多个系统,但 由于网络线路不稳定等原因,经常会出现报文丢失或公文的重复接收等情况,由于这些是 用户的重要业务数据,用户对此的可靠性要求日益增强。 综上所述,不同的业务系统在不破坏现有系统情况下,需要能实现异构系统之间的可 靠互操作。在以往的解决方案中,不同系统的数据交换,一般都是采用点对点的方案来实 施的,即根据特定连接需求,满足特定问题。这样,对于每个应用,都要为每个需要的资 源或外部资源编写连接代码,以使得应用得以运行,当增加了一个新系统,就需要重新和 所有系统建立点对点的连接。由于每个应用都有其特有的基础架构,这些应用在部署、更 改和维护上的代价都非常昂贵。这就要为每套应用配置特有的专业技术人员,并与不同的 技术供应商或解决方案提供商保持密切联系,成本昂贵如图1 1 所示: 图1 1 点对点数据交换接口繁多 国防科学技术大学研究生院学位论文 用户迫切需要一个独立的连接系统,能够利用统一的方式,支持不同的平台,实现各 系统之间不同结构和不同格式数据的互相交换,并且可以根据服务流程的灵活定义统一协 调各个部门业务系统之间的业务流程。各个应用系统都通过这个连接系统与其他应用系统 进行数据交换,这个连接系统我们称为数据交换平台如图1 2 所示。 图1 - 2 采用数据交换平台后接口明显减少 目前解决系统集成问题的方案很多如c o r b a 、n e t 和j 2 e e 等,而w e b 服务是比较 前沿的一种解决方案。利用w e b 服务建立统一的数据交换平台来实现不同系统的数据交换 和共享,各项应用共享同一数据通道,将不同平台、不同架构和不同功能的企业业务系统 有机连接起来。那么接下来开始研究w e b 服务为什么能支持不同业务系统的集成及目前在 w e b 服务中常用的网络传输协议存在怎样的问题。 1 2 研究现状 w e b 服务是使用标准的x m l 格式描述一些可以通过网络访问的操作接口嘲。这一描 述囊括了与服务交互需要的细节,包括消息格式( 详细描述操作) 、传输协议和服务位置。 该接口隐藏了实现服务的细节,这允许并支持基于w e b 服务的应用程序成为松散耦合、 面向组件和跨技术的实现。w e b 服务就是一种部署在w e b 上的对象( w e bo b j e c t ) ,它具 有面向对象技术所承诺的很多优点,如完好的封装性等;同时,w e b 服务的基石是以x m l 为基础的、开放的规范技术,因此它具有比任何现有的对象技术更好的开放性;w e b 服务 采用简单的、易理解的标准w e b 协议作为组件界面描述和协同描述规范,完全屏蔽了不同 软件平台的差异,从而实现了在大多处环境下的较高可集成性 w e b 服务体系结构基于三种角色( 服务提供者、服务注册中心和服务请求者) 之问的 交互。交互涉及发布、查找和绑定操作。这些角色和操作一起作用于w e b 服务构件:w e b 服务软件模块及其描述。在典型情况下,服务提供者管理可通过网络访问的软件模块( w 曲 服务的一个实现) 。服务提供者定义w e b 服务的服务描述并把它发布到服务请求者或服务 注册中心。服务请求者使用查找操作来从本地或服务注册中心检索服务描述,然后通过服 务描述与服务提供者的绑定调用w e b 服务实现并同它交互。服务提供者和服务请求者角 国防科学技术大学研究生院学位论文 色是逻辑结构,因而服务可以表现两种特性。如图1 3 示意了这些操作、提供这些操作的 组件及它们之间的交互。 图1 3w e b 服务角色、操作和构件 要以一种可互操作的方式执行发布、发现和绑定这三个操作,必须有一个包含每一层 标准的w e b 服务协议栈。图1 4 展示了一个概念性w e b 服务协议栈。上面几层建立在 下面几层提供的功能之上。左面的文本表示协议栈的那一层所应用的标准技术。 w e b 服务协议栈的基础是网络层。w e b 服务要被服务请求者调用,就必须是可以通 过网络访问的。因特网上可以公用的w e b 服务使用普遍部署的网络协议。h r r p 凭借其 普遍性,成为了因特网可用的w e b 服务真正的标准网络协议。w e b 服务还可以支持其它 因特网协议,包括s m t p 和f t p 。内部网可以使用可靠消息传递和调用基础结构如 m q s e r i c s 和c o r b a 等等。网络层( n e t w o r k ) 的上一层是基于订l 的消息传递,它 表示使用x a m l 作为消息传递协议的基础。最上层的服务描述层实际是描述文档的一个协 议栈。w s d l 是支持可互操作的w e b 服务所需的最小标准服务描述。还可通过其他服务描 述文档来补充以描述w e b 服务的更高级方面。如描述业务环境还要使用u d d i 协议,描述 服务组成和流程使用w s f l ( w 曲s e r v i c e sf l o wl a n g u a g e ,w e b 服务工作流描述 语言) 。 w s d l s o a p h r t p s e r v i c ed e s c r i p t i o n x m i - b a s e d m e s s a g i n g n e t w o r k 图1 4w e b 服务协议栈 s o a p 规范是由几大元素组成的,s o a p 的核心是个消息传递的框架,描述了消息如 何被构造,消息如何被处理,和一个消息如何绑定到一个消息的传输协议中。s o a p 的其 他元素描述了请求应答的编程模型,该模型的实现正是使用了s o a p 的消息传递框架, 国防科学技术大学研究生院学位论文 其中将h t t p 作为传输层协议。所有组成元素描述了基于h t t p 的请求应答机制的远程 过程调用。一些厂商免费提供了一些其他的传输协议( 如c a p e c l e a r 公司支持的j m s , h t t p h t t p s ,和s m t p 等传输协议但是,s o a p 规范并没有明确说明除h t r p 之外的 传输层协议的具体实现,这使得各消息中间件厂商之间的实现细节存在差异。 s o a p 协议非常简单,正如它的名字一样。这正是为什么那些像c o r b a 或r m i 等复 杂远程对象系统逐渐消失的原因,它们考虑了很多像分布式的垃圾收集,对象激活,通过 本机代理访问远程对象等问题;同样在s o a p 协议中,一些保证可靠传输、消息路由和消 息关联等关于消息健壮性问题也被忽视了。正是由于s o a p 的简单,它被广泛使用,而不 是被其他的远程对象规范( 如c o r b a 或r m i 等) 和企业消息规范( 如j m s 等) 所替代。 而是希望能通过使用健壮的远程消息中间件如( i t m i 或j m s ) ,来实现对w e b 服务的访问。 首先让我们来分析s o a p m 1 p 请求的情形: 1 长时间延迟 s o a p h 1 - r p 请求是同步的。它表示应用请求激活远程方法并且阻塞直到应答返回。 对于企业内部的请求,这个问题也需仔细考虑。一个快速响应的应用需求是要求所有请求 应答之间交互的忽略不计。通过互联网来访问远程对象的网络延迟是通过企业内部网请 求的几倍。 2 不确定的远程状态 为了一个远程方法的调用,请求与应答将被重要地通过线路传输。如果一个客户请求 远程方法但返回应答失败,它将无法确认是请求还是应答丢失。对于后者,远程方法将被 激活,并且远程状态可能被改变。这个问题无论是在企业内部网还是在w e b 服务中都会存 在,在w e b 服务中出现的频率更大;原因有二:第一:对于企业内部网而言,互联网更缺 乏可靠;第二:在外力因素影响下的远程w e b 服务的服务质量无法确认。 以上是对s 廿h t l 甲请求不可靠问题的总结,那么目前对可靠消息传输主要有以下 两类解决方案: 利用消息中间件技术 使基于s o a p 的消息能够运行在提供可靠的网络传输层协议之上如j m s ; 从w 曲服务规范本身出发 1 通过标准合作组织制定新的规范如( h t t p r 和w s r e l i a b l e m e s s a g i n g 等) ; 2 通过硬件、操作环境和基础架构供应商改进其产品确保更好的可靠性。 从w | e b 服务的体系结构中可以看出,w e b 服务并未限制其使用的应用模式,也并未将 其与底层的传输协议进行绑定,基于此本课题提出如下两个问题: 如何利用w e b 服务来满足以上的业务需求; 如何保证w e b 服务中传输的可靠性; 本课题将对数据交换平台中可靠的w e b 服务方面进行一定的探索,以成熟的消息中间 件技术为基础框架,确保数据交换平台中消息传输和w e b 服务的可靠性。 国防科学技术大学研究生院学位论文 1 3 课题目标 本课题将深入研究w e b 服务的可靠消息模型,在此基础上,比较目前解决w e b 服务 可靠问题的几种相关技术的优缺点和应用场景,选出一种适合在企业环境下使用的解决办 法,依照该方法设计并实现一个基于可靠w e b 服务的s o j t 中间件系统,最后以该系统在 项目中的应用为例,验证了其合理性和实用性。 1 4 论文结构 论文共分为五章。 第一章是绪论部分,主要介绍了课题的背景和国内的研究现状,指出了企业使用w e b 服务建设数据交换平台的原因和w 曲服务目前存在的可靠性问题,然后简要说明了本课题 的研究目标及研究的意义。最后介绍了本文的主要工作和论文结构。 第二章概要地介绍了课题中的相关技术。首先介绍了消息中间件技术的基本原理,然 后研究了w e b 服务的传输协议以及目前解决w e b 服务可靠性问题的几种关键技术,并总 结它们之间的优缺点和应用场景。 第三章给出可靠w e b 服务的参考模型及其设计,并讨论它的特点,即确保消息发送、 减少重复消息和保证消息的按序发送。最后上面的研究,给出基于可靠w 曲服务的数据交 换平台的设计。 第四章基于前一章的设计,给出数据交换平台中部分核心模块如s o j t 中间件中的 s o a p j m s 处理器及s o j t e n g i n e 等与w e b 服务管理和工作流整合引擎等模块的实现,最 后在项目应用中验证数据交换平台的合理性。 第五章对论文工作进行了总结,并对下一步的工作和需要开展的相关研究进行了展 望。 国防科学技术大学研究生院学位论文 第二章课题关键技术研究 本章概要地介绍了课题中的相关技术。首先介绍了消息中间件技术的基本原理,然后 研究了w e b 服务的传输协议以及目前解决w e b 服务可靠性问题的几种关键技术,并总结 它们之间的优缺点和应用场景。 2 1 消息中间件 消息中间件( m e s s a g e o r i e n t e d m i d d l e w a r e ) 。简称m o m “”是通过使用驻留在内存或 硬盘上的队列作为消息缓冲,提供分布应用程序之间的一种可靠的信息交换机制,以及分 布式系统的应用集成方式。消息队列服务是一种松耦合的分布式应用集成形式。 消息中间件是提供在广泛的软硬件平台之间进行可靠的数据传输的一套通信系统,它 屏蔽了操作系统和网络通信协议差异,能够为异构系统提供通讯服务。面向消息的中间件 是通信中间件的一种,它通过消息队列为应用程序提供一种异步通信方式,它不需要应用 程序和通信介质( 或网络) 以及远程应用程序之间的耦合,也不需要进行通信的应用程序 同时运行。消息中间件m o m 在t c p i p 网络体系结构中处于应用层( 见图2 1 ) ,网络应 用程序( n e t w o r k a p p l i c a t i o n p r o g r a m 简称n a p ) 建立在面向消息中间件之上口0 1 ,实现各 种分布式应用服务。 消息中间件在异构的网络协议、操作系统和应用程序之间提供可靠的和可恢复的( 若 发生意外) 消息传送。有时应用并不需要消息即时即刻传递到对方,只是由m o m 确保把 消息传送到适当的目的地,并且只传送一次。m o m 既支持同步方式,又支持异步方式, 在系统故障时可以保证消息的正常传输。 n a p 应用层 m o m t c p 传输层 i p 网络层 以- 口 其 数据链 r 他 太 写 路层 网 _ 口 图2 1 面向m o m 在t c p 仰网络体系结构中的位置 m o m 是中间件中非常独特的一类蜘,它支持在一个分布式应用环境中多种用途的消 息交换在分布的计算进程之间,消息是通过消息传递、消息排队两种方法,以同步或异 国防科学技术大学研究生院学位论文 步方式进行交换的。m o m 作为一种基本的中间件,其基本功能就是使分布应用问的通信 变得更容易。虽然,m o m 支持同步和异步两种方式的消息传递,但它更趋向于使用队列 进行异步消息传递。m o m 将消息从一个应用发送到另一个应用,使用队列来作为一个过 渡。客户消息被送到一个队列,并被一直保存在队列中,直到服务应用将这些消息取走。 这种系统的优点就在于当客户应用在发送消息时,服务应用并不需要运行。实际上,服务 应用可以在任何时候取走这些消息。此外,由于可以从队列中以任意顺序取走消息,所以, m o m 就可更方便地使用优先级或均衡负载的机制来获取消息。 2 l 1 消息队列模式 消息队列是进程间进行可靠性通信最直接的手段,在m o m 件中被广泛采用;队列和 队列管理是消息队列中间件中两个最重要的角色。消息队列提供消息的中间存储。队列通 常基于内存或者硬盘,实际是存在于一个计算机上的已命名且排序的持久存储消息库。队 列管理器管理多个消息队列,应用程序首先需要连到队列管理器才能打开并使用消息队 列。在消息队列通信模式下,消息处理的基本思想很简单。当某应用a 准各向应用b 发送 一个请求时,a 先通过设置消息头部的各项属性和参数信息打包到一个有效负载来创建和 准备一个消息m ,这个有效负载称为消息体( m e s s a g eb o d y ) 。然后a 把这条消息m 提交 给本地的队列,消息会在队列中安全存储。在提交完成后,a 就可返回去做其他工作,而 不必管消息的具体传递队列管理器将代表应用程序对消息实施存储一转发,并把消息发 送给b 对应的队列,然后b 就可从它的队列中提取消息。b 在读消息时就将它从队列中清 除,所以一个消息只处理一次。整个通信过程中,a 和b 之间无直接的连接,双方能按照 不同的速度独立运行,而且a 并不强制要求b 一定可用。 利用队列可实现异步、可靠的消息通信,也易于使用、实现和理解,但也存在这样一 些不足。主要表现在:消息队列是一种单向的模型,不支持双向通信。消息的发送者不能 直接得到返回值,无法跟踪状态;消息传送是一对一的。每条消息只有一个消费者;消息 发送者需要知道消息接收者的队列地址才能与其通信;由于消息队列的引入,应用程序的 设计中需要解决许多因队列而引发的问题。诸如:如何有效地管理消息队列? 消息队列满 时系统将如何处理? 应用的一个请求超时时无法在规定时间内将所需消息传递到目的方时 如何处理? 队列如何分配给系统中众多的应用进程? 等等。 2 1 2 发布订阅模式 发布订阅是一种近年来逐渐流行的消息通信模式。当一个应用程序发生了某一事件 ( 通常为表现为一个消息) ,会导致其他应用程序某种行为的发生,这真实反映了一个企 业或者跨越多个不同企业的复杂的商务处理过程在某种程度上说,它相对消息队列模式 来说更加有效,因此事实上已成为m o m 的非正式标准。 在发布订阅通信模式中,没有传统意义上的客户端和服务器。发布消息的目的地和 消费消息的消息源通常是一个虚拟通道,通常其中封装了一个发布订阅的目的地对象。 消息的生产者成为发布者,消息的消费者则相应地称为订阅者。发布者和订阅者之间的结 国防科学技术大学研究生院学位论文 合非常宽松,根本不必了解任何有关对方的情况。订阅者通过注册自己感兴趣的消息( 即 “定义订阅”) 来获得消息。发布者发布的一条消息会传递到对该消息感兴趣的所有订阅 者。通常订阅可分为持久性的( d u r a b l e ) 或非持久性( n o n d u r a b l c ) 两种,非持久性的订 阅者只能收到订阅之后才发布的消息,持久性订阅者可以中断之后再连接,仍能收到在它 断线其间发布的消息。 发布订阅通信模式具有如下的特点: 1 、通过一个消息代理进行通信:发布者和订阅者之间永远都不会直接通信,而是通 过消息代理进行。发布者将消息传递给消息代理,有消息代理负责路由消息给相应的订阅 者。消息代理可以实现消息的动态路由功能,因此,该方式能够提供较好的容错性能。 2 、多维空间上松耦合:这是发布订阅模式的主要优点所在,客户端和服务器不需要 知道对方的地址和具体的数量,从而简化了应用的配置,并且使组件更易重用。具体体现 在以下几方面: 空间松耦合:发布者和订阅者不必相互了解,可实现匿名通信; 时间松耦合:发布者和订阅者不必同时在线; 数据流松耦合:发布订阅是异步模式。 3 、支持消息组播。发布者发布的一条消息可传递给多个订阅者。 相对于消息队列中间件而言,支持发布订阅的中间件可扩展性更好,更适合用于建 立大型的分布式应用。 几种发布订阅实现模型 为满足不同领域的特定需求,发布订阅模式的具体实现可有多种不同的形式。通常 分为三种: 基于通道的发布订阅( c h a n n e l - b a s e dp u b l i s h s u b s c r i b e ) 基于主题的发布订阅( t o p i c - b a s e dp u b l i s h s u b s c r i b e ) 基于内容的发布订阅( c o n t e n t - b a s e d p u b l i s h s u b s e r i b e ) 这些实现模型的主要区别在于发布者订阅者之间的逻辑通信中介不同。 1 、基于通道的发布订阅 基于通道的发布订阅模型是最早的发布订阅模型。该模型中的逻辑通信中介是事件 通道( e v e n tc h a n n e l ) 。事件通道作为事件生产者和消费者的通信中介,隔离了两者,并基 于“推”和。拉”动作负责把事件从生产者传递给感兴趣的消费者。c o r b a 的事件服务 就属于这一模型。这种模型在m o m 中一般不使用,因为“通道”的概念过于粗造,不能 反映消息的特征。这使得订阅者订阅极不灵活。 2 、基于主题的发布订阅 基于主题的发布订阅是最普遍使用的发布订阅模型,广泛应用在m o m 中。这种模 型中的逻辑通信中介是主题( t o p i c ) 。主题可看成是众多消息按某些属性抽象出来的共性。 主题用主题名来标识,如一条关于天气预报的消息主题可定义为“w e a t h e r ”,主题还可以 国防科学技术大学研究生院学位论文 形成层次结构,叫做主题树,如“w e a t h e r ”下还可以定义主题“t e m p e r a t u r e “。尽管基于 主题的发布订阅模型相对于基于通道的发布订阅模型而言灵活性要好得多,但它仍不够 灵活,与后者存在许多共性。事实上,通常将基于主题的发布订阅模型与基于通道的发 布订阅模型归为一类,叫做基于组( g r o u p - b a s e d ) 的发布订阅模型。因为它们的一个共 同点是,消息均被分成“组”,每条消息对应一个“组”,订阅者只能订阅某一组消息。 3 、基于内容的发布订阅模型 基于内容的发布订阅模型是最近才兴起的,并逐渐成为发布订阅模式中的研究热 点。在这种模型中,事件根据一定的模式将事件内容定义为一个不同类型的属性集。订阅 信息则定义为这些属性上的一系列判定。相对于前两种发布订阅模型,它具有以下优点: 首先订阅者在多维的事件属性中选择过滤标准,而不仅仅是一个预定义的通道或主题,因 此具有更大的灵活性;其次,它消除了定义和维护大量基于主题的组的管理开销,因此简 化了系统的管理,我们可以通过( 图2 2 ) 中的a 与b 两个示意图清楚地看出它与基于主题 的发布订阅的区别。 ( 图2 2 ) 表示了某产品信息发布系统中的发布订阅过程。a 中的发布订阅是基于主 题的,b 是基于内容的。a 中的发布消息被划分为三个主题i b m 、m s f t 和b e l ,某订阅 者希望得到满足条件为( v o l 1 0 0 0 ) 的产品,此时他必须订阅所有三个主题的消息,每 个主题对应的所有消息都会发送到他,而很多消息并不是他需要的,而在b 中每条消息表 现为若干属性值对,这个订阅者只需以( v o l l 0 0 0 ) 为条件来订阅消息,经过消息过滤 的处理,他只会收到满足这一条件的所有消息。 图2 2 基于主题的发布订阅与基于内容的发布订阅的比较 基于内容的发布订阅在提供极大灵活性的同时付出的代价是复杂性。导致复杂的一 个重要原因是消息与订阅的匹配将变得极为复杂,因为此时消息不分组,消息的匹配要针 对每个订阅用户进行。因此,这种模型实现的一个关键是提供一种有效的消息过滤( 即消 息与订阅的匹配判断) 机制。目前,对匹配问题的研究国外已取得了一些成果有些已成 功地运用到实际的系统设计中。较具代表性的有两类:匹配树算法和二叉决策图算法嘲, 当发布订阅系统基于x m l 技术构建时,x m l 中的x p a t h t 翻能为消息过滤问题提供很好的 国防科学技术大学研究生院学位论文 技术支持。x p a t h 把一个x m l 文档看成一个树或节点的模型,能基于x m l 文档的逻辑结 构在该结构中进行导航,进行节点的定位。除用于定位外,x p a t h 自身还有一个子集能用 于进行匹配。它能验证一个节点是否匹配某个模式。因此,当消息表现为一个x m l 文档, 订阅定义为一个x p a t h 表达式( 相当于一个匹配模式) 时就可非常直观,有效地实现消息 与订阅的匹配。 2 1 3j m s 技术 j m s ( j a v am e s s a g es e r v i c e ) 规范是s u n 公司提出的j a v a 消息服务,它并不是具体 的实现,它提供了一组与具体实现无关的固定接口。企业的分布式应用程序通过这组接口 访问支持j m s 规范的m o m ,而与m o m 的提供厂商无关。j m s 规范中消息由两部分组成: 消息头部和消息主体。消息头部由路由信息以及有关该消息的描述组成。消息主体则携带 着应用程序的数据,消息主体中的数据类型有:简单文本( t e x t m e s s a g e ) 、字节消息 ( b y t e s m e s s a g e ) 、对象消息( o b j e c t m e s s a g e ) 、名值对消息( m a p m e s s a g e ) 、流消息 ( s t r e a m m e s s a g e ) 等。j m s 规范提供了一个通用的消息模型,支持同步和异步通讯机制,工 作模式有点对点模式和发布订阅模式。j m s 的发布订阅模式采用异步通讯机制,这就使 得j m s 客户端发布订阅消息时不必等待回应。这完全不同于基于r p c 的系统,在r p c 中,客户端调用服务器上的某个分布式对象的一个方法,在方法调用返回之前,该客户端 被阻塞,直到得到回应或者“超时”。在j m s 中,消息发送者将消息发送到一个消息代理 管理的数据池中,直到所有订阅者收到该消息。如果订阅者离线,则在订阅者下次登录到 消息代理时,消息代理将自动将订阅者离线期间到达的订阅消息传送给订阅者。j m s 规范 并不指定消息节点问所使用的底层通讯协议。下面来看下j m s 的应用场景。 应用程序a 通过m o m 的应用程序编程接口( a p i ) 来发送消息,从而和应用程序b 通信。通过m o m 路由消息给应用程序b ( 可能位于完全不同的计算机上) ;m o m 对网 络通信进行处理。如果没有网络连接,m o m 将一直存储消息直至获得网络连接,然后将 消息转发给应用程序b ,如图2 3 所示。 【a p p l 譬吼:。删l c b 舶n i a p p l i c a t i o np r o g r a m m i n gi n t e r f a c e l m e s s a g e o r i e n t e d m i d d l e 蜘w a r e 图2 3j m s 应用场景 国防科学技术大学研究生院学位论文 灵活性的另一个方面是应用程序a 发送消息时,应用程序b 甚至可以不处于执行状 态。m o m 会一直保留消息到应用程序b 开始执行并试图取回消息为止。这还可以避免 应用程序a 在等待应用程序b 接收消息时阻塞。 这种异步通信要求应用程序的设计与现在已设计的大部分应用程序稍有不同。不过对 于时间独立或并行处理来说,这会成为一种比较有效的方法。企业消息系统真正的力量在 于应用程序的松耦合。在图2 3 中,应用程序a 发送它的消息,其中指示了特定的目标, 例如“订单处理”程序。以后我们可以用不同的订单处理程序代替应用程序b ,但应用程 序a 不会察觉这一点。它会继续发送它的消息给“订单处理”,而消息也会继续被处理。 同样,我们也可以替换应用程序a ,只要那个替代者继续为“订单处理”发送消息,订单 处理程序不必知道有一个新的应用程序正在发送订单。 从上述可以看出,以m o m 为基础的结构框架提供了非常重要的优势,包括: 消息的确保发送和消息的持久化; 松散耦合的系统建模方式; 系统结构的可扩展性和聚类性( c l u s t e r i n g ) ; 对异步编程模式的支持; 由m o m 提供的这些特性正好符合了w e b 服务的发展需求,整合两种技术可以为我们 获得以下目标: 可靠性:对于大多数使用h t t p 、h t r p s 、s m t p 作为传输协议的w e b 服务来说, m o m 提供的经过验证可靠的( t r i e d a n d - t r u s t e d ) 的异步性、大容量、事务性特点都是必不 可少的; 可扩展性:某些软件对系统的可扩展性有着较强的要求,因此必须采用异步的或 者是非阻塞的设计方式; 异步性:对于某些面向工作流的w e b 服务或者需要较长时间,甚至需要人工干预 才能够完成的w e b 服务,提供异步操作和异步的消息传输机制是必然的。而利用m o m 的 异步编程特性可以很好的为这些w e b 服务提供异步性。 j m s 是一组定义j m s 客户如何访问企业消息传递产品设施的接口和相关语义在 j m s 出现之前,每个m o m 供应商通过专有的a p i ( 通常有多种语言编写的版本,包括 j a v a 语言) 支持应用程序访问它们的产品。j l v l s 通过m o m 产品为j a v a 程序发送和接 收消息提供了一种标准可移植的方法。用j m s 编写的程序能够在实现j m s 标准的任何 m o m 上运行所以,我们的设计中将采用j m s 作为访问m o m 系统的接口。 2 2w e b 服务 2 2 1s o a p w e b 服务的核心是互操作性概念,既不同系统能够无缝地进行通信和共享数据,这也 是w e b 追求的目标。而简单对象访问协议s o a p ,正是实现w 曲服务这一日标的核心协议之 国防科学技术大学研究生院学位论文 一。s o a p 是目前w e bs e r v i c e s 技术所采用的主流互操作协议。作为适用于在分布式环境 下交换信息的一种基于x m l 的轻权协议,s o a p 具有简单易用,可穿越防火墙等特点。 s o a p 规范的核心部分就是消息处理框架。s o a p 消息处理框架定义了一整套x m l 元素,用 以“封装”任意x m l 消息以便在系统之间传输。 很多时候s o a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论