




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 网络应用体系结构的发展,产生了中间件技术,消息中间件技术是中间件技 术的发展热点计算机网络环境的日益复杂使分布式网络通信面临着巨大的挑战, 而消息中问件技术无疑是分布式网络通信问题的最好解决方法。它所创建的客户 机中间件服务器三层分布式网络应用模型已经成为网络应用的主流。为此,本 文研究并实现了一个应用于客户机服务器模式的面向网络报税系统的消息队列 中间件系统( 下面我们将简称该系统为m q ) 本文首先,介绍了消息队列中间件概念、特点、通信模型以及关键技术。 其次,给出了消息队列中间件系统在网络报税系统中的应用结构及其体系结 构,提出了m q 的编程模型在此基础上,详述了消息队列中间件系统设计中的 消息数据结构模型、消息队列模型和消息传输模型。 最后,给出了消息队列中间件系统部分模块的详细设计,重点实现了消息数 据结构设计、客户端接口设计、队列设计等,提出了消息异步通信和存储设计简 单的实现方法。同时,介绍了程序设计中采用的对象池技术,结尾处给出了一个 客户机使用峻系统发送消息的简单实例。 关键词:三层客户机服务器消息中间件队列点到点 a b s t r a c t a b s t r a c t w i t ht h ed c v c l o p m c a to fa r c h i t e c t u r eo fn e t w o r k sa p p l i c a t i o n ,m i d d l e w a r e t e c h n o l o 醪h a sc o m ei n t oi 把i n g m 璺墨随醣o r i e n t e dm i d d l e w a r e ( m o mf o rs h o 哟 t e c h n o l o g yi sa c t i v ea r e ao fm i d d l e w a r et e c h n o l o g y b e c a u s eo fm o l t oa n dm o r e c o m p l e xc o m p u t e rn e t w o r ke n v i r o n m e n t , d i s t r i b u t e dn e t w o r kc o m m u n i c a t i o nb e a x ) m e s ag r e a tc h a l l e n g e u n d o u b t e d l y , m o m t e c l m o l o g yi s ab e s ts o l u t i o nt oa d d r e s s p r o b l e m so fn e t w o r kc o m m u n i c a t i o n t h e3 - t i e r e dd i s m b u t e dc o m p u t i n gm o d e lo f c l i c a t m i d d i e w a r e s e r v e rt l m ti tt h e r e f o r ec o n s t r u c t sh a sb e x 前l n et h em a i n s t r e a mo f i n t e m e ta p p l i c a t i o n t h i sp a p e rr e s e a r c h e da n di m p l e m e n t e dam o m s y s t e mb a s e do n n e t w o r kt a xu s i n gc l i e n t s e r v e rp a t t e r n ( w ew i l lc a l lt h i ss y s t e mm qf o rs h o r tb e l o w ) t h i sp a p e rf i r s t , t h ec o n c e p t s ,c h a r a c t e r i s t i c s ,c o m m u n i c a t i o nm o d e la n di t sr e l a t e d t e x h n o l o g i ( ma b o u tm o m h a v eb e e ni n t r o d u c e d s e c o n d , w ei n t r o d u c et h ea p p l i c a t i o n s t r u c t u r ea n di t sa r c h i t e c t u r e , a n da l s op r o p o s eap r o g r a m m i n gm o d e lo fm q b a s e de l l t h e s e , w ea n a l y z em e s s a g ed a t am o d e l ,m e s s a g eq u e u em o d e la n dm e s s a g et r a n s m i s s i o n m o d e l a tl a s t , w ed e s c r i b et h es p e c i f i cd 伪i g no fm qm o d u l e ,w h i c hm a i n l ye m b o d i e s s t r u c t u r a ld e s i g no fm e s s a g ed a t aa n di n t e r f a c ed e s i g no fc l i e n ts i d e w ep r o p o s et h e s i m p l ei m p l e m e n t a t i o n m e t h o d so f q u e u ed e s i g n , a s y n c h r o n o u sm e s s a g e c o m m u n i c a t i o na n ds t o r a g ed e s i g n m e a n w h i l e , w ea l s oi n t r o d u c et h eo 巧e c tp o o l t e c h n o l o g yu s e di np r o g r a md e s i g n a tt h ec a do ft h i sp a p e r , w ei j i u s n a t cas i m p l e s y s t e m c a s ew h e r eac l i e n tu s e sm qt os e n dm e s s a g e s k e y w o r d s :3 - t i e r e dc l i e n t s e r v e rm e s s a g eo r i e n t e dm i d d l e w a r eq u e u e p o i n tt op o i n t 剖新性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢中所列的内容外,论文中不包 含其他人已经发表或撰写过的研穿成果:也不包含为获得西安电子科技大学或其 它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的 任何贡献均在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名:在堡盔日期:2 独! ! :立 关于论文使用授权说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期问论文工作的知识产权属西安电子科技大学。本人保证毕业离 校后,发表论文或使用论文工作成果时署名仍然为西安电子科技大学。学校有权 保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分 内容,可以允许采取影印、缩印或其他手段保存论文。( 保密的论文在解密后遵守 此规定) 本学位论文属于保密,在一年解密后适用本授权书。 本人签名: 导师签名: 签量盔 同期:塑皇! ! :3 同期:纫移6 ,歹弓 第一章绪论 第一章绪论 1 1 研究背景 1 1 1 网络应用程序体系结构的发展 任何一个应用,从p c 机上的报表程序到大型机上的计算,都由三个部分组成; 用户界面部分( 表示层) ,应用逻辑部分( 应用逻辑层) 和数据访阀部分( 数据 访问层) 。表示层的功能是与用户交互;应用逻辑层进行具体的运算和决定程序 的流程等;数据访问层维护和更新应用程序的数据。尽管任何一个应用都由这样 的三个部分组成,但是在分布式网络应用中,开发人员依据不同的需求,诸如开 发费用、扩展性及组件重用性等,在程序实现上会有不同的侧重,这样就形成了 分布式网络应用模式的发展思路。 分布式计算网络应用体系结构的发展过程,大致可分为四个阶段 第一阶段:基于主机终端模式的计算模型,这是最初的计算机应用模式主 机配备多个终端互连成一个系统。该应用模式中几乎所有的计算都是由主机来完 成的,主机是系统的核心,一旦主机出了故障,整个系统便瘫痪,终端只是作为 一种输出设备。在这种模式下,应用程序所需要的表示层、应用逻辑层和数据访 问层都在主机上体现,终端没有涉及到任何应用程序的体现。 第二阶段:基于服务器处理的计算模型。这种模式开创了客户机服务器模式 的网络应用体系结构的先河。它通过网络将多台计算机相连,以实现资源共享。 计算机的资源全部分布在服务器上,用户还是通过终端访问服务嚣的资源。这种 模型中资源并没有实现分布化,它只是利用各站点的能力对所有应用进行运行, 用服务器的能力作为外设的延伸。这种模式下,应用程序逻辑中的表示层放到了 客户端,应用逻辑层和数据访问层都在服务器上体现。 第三阶段:基于客户机服务器( 下面我们简称为c s ,c l i e n t s e r v e r ) 的计算 模型,这类模型是应用最广泛的一种编程模式。数据统一存储在数据服务器上, 而有关的业务逻辑都在客户端实现,这就是所谓胖客户机的解决方案。将数据访 问部分和应用程序( 包括表示层和应用逻辑层) 分离出来,由数据服务器执行数 据操作,客户机执行应用程序。用户在客户端通过网络与数据库服务器交互。网 络上传送的数据主要是客户端向服务器发出的请求以及服务器发送给客户端的相 应结果和出错信息。由于这种模式应用广泛,我们通常所说的客户机服务器模式 就是这种模式,它是一种两层的应用模式。 2 基于税务系统的消息队列中间件的研究与设计 c ,s 网络应用体系结构有着显著的优点,如可以减少局域网传输量、降低对数 据控制的难度、提高系统的联机事务处理能力、增强系统的开放性和可扩充性、 提供了多用户开发特性等。但是,随着分布式网络的发展,在多用户、多数据库 且非安全的网络环境之下,这种只有两层客户机,服务器的应用也出现了明显的局 限性,主要表现在以下两个方面: ( 1 ) 运行c s 体系结构的计算机需要安装一套完整的协议堆栈 网络采用c s 模式进行通信,一个服务器应用进程被动的等待请求,客户机 应用进程主动地发起通信。服务器应用进程必须与远程的客户机进程尝试进行通 信之前与协议软件进行交互,通知本地协议软件它所等待信息的特定类型,然后 等待信息的到来。当到来的信息与应用进程详细说明的信息类型完全匹配时,协 议软件才将这个信息移交给应用进程。一个客户机或一个服务器应用进程为了建 立通信,需要与一个运输层协议直接交互,然后传输层协议才能利用底层协议发 送和接受单个的信息。这样一来,运行客户机或服务器软件的计算机上需要安装 一套完整的协议堆栈才能同心,很不灵活。 ( 2 ) 服务器的数据库必须同每一个活动的客户机保持连接 在两层c 搐模式下,服务器的数据库必须同每一个活动的客户保持连接,这 些连接消耗了大量的运算资源。其结果是随着客户数目的增加,性能不断下降。 多用户、多数据库的连接存在系统死锁和崩溃的潜在可能。在互联网这样的大规 模分布式环境下,若长时间锁住一项数据防止其他用户访问,将造成其他用户长 时间等待,影响系统效率。 ( 3 ) 安全性差 两层c s 模式下的安全管理不适合非局域网环境。由于事务处理逻辑驻留在 客户端,所以在这种给予用户授权方式的安全管理下,一旦用户拥有了某项权限 就可以“为所欲为”,即可以绕过客户端的应用逻辑直接操作数据,这样加大了 系统的风险系数。 ( 4 ) 可移动性差引起资源浪费 首先,两层网络应用程序的代码难以得到重用。因为这种应用( 包括用户界 面和程序逻辑) 和具体的数据紧密联系在一起,重用只能以拷贝源代码形式而不 是以组件的形式来实现其次,由于应用逻辑全部驻留在客户端,因而当应用环 境发生变化需要改变事物逻辑时,每个客户机上的程序都需要更新,给系统的维 护和管理造成了一定的困难。 随着应用系统越来越复杂,客户端应用程序变得越来越庞大,对客户机的处 理能力要求越来越高。如何简化用户程序逻辑并提供可靠、安全的功能强大的服 务,是对网络应用体系结构提出的更高要求。为解决传统二层c s 模式与应用需 求日益突出的矛盾,三层或多层c ,s 模式应运而生。 第一章绪论3 第四阶段:三层或多层c s 模型。中间件技术为计算机应用体系结构带来了一 次革新。它在原有的两层模型中插入了一个中间层,该中问层提供业务逻辑处理、 消息队列、进程运行和数据传输等服务,来满足大量用户同时访问的需求。中间 件技术的产生为两层模型应用向三层乃至多层分布式应用的转移提供了重要的支 持。现在,中间件技术所创建的客户中间件服务器这样三层分布式计算模型己 经成为网络应用的主流。 在三层c s 模型中,表示层、应用逻辑层、数据服务层被分割为三个相对独 立的单元。各种业务规则都封装在各自相应的构件中,这样业务规则的实现和客 户使用的用户界面的实现就相分离了( 在两层c 搐模型中,两者是同时在客户机 应用程序中实现的) 。 1 i 2 分布式应用对网络通信的挑战 随着计算机资源的分布和互联程度越来越高,人们对可靠性,可扩展性、可 适应性,资源利用效率等方面提出了更高的要求。网络应用程序,经历了从简单 到复杂,从集中到分布的演变,大型分布式应用程序的构建和维护却是一件十分 复杂的事情,尤其是不同应用程序问的通信,主要表现在两个方面: ( 1 ) 大型的分布式网络应用中,不同的应用运行在不同的进程中,分布在不同 的计算机上。甚至跨系统,跨网络如何将这些应用有效的集成,使不同的应用 能够保持良好的通信真正发挥分布式应用的巨大优越性,这一点已经成为衡量 一个网络应用是否可靠,是否稳定的重要标准。 ( 2 ) 传统的通信技术要求发送和接收应用程序必须满足两个条件:一是他们同 时在线;二是通过网络能同时通信,发送者和接收者必须知道相互闯程序的调用 接口。这就要求,一个应用程序一旦有任何接口变化,都必须通知其他应用程序。 为了保持数据的完整性,发送和接收应用程序通常使用分布式业务,以确保任一 方应用程序数据的改变能被双方承认。然而,在分布式网络应用中,实际情况是 应用程序并不总是同时运行,网络,尤其是广域网。并不总是可用和可靠的网 络硬件故障的不可避免性,数据流量的突发性造成网络信息拥塞等问题,使得应 用程序之问的异步通信问题变得非常突出。 消息中间件是解决这些问题的最好方法消息中间件是中间件的一种,也是 中间件中必不可缺的一种。消息中间件指的是利用高效可靠的消息传递机制进行 平台无关的数据交流,并基于数据通信来进行分布式系统的集成。它通过提供消 息传递和消息排队模型,可在分布环境下扩展进程问的通信,并支持多种通信协 议、应用程序、硬件和软件平台。 消息中间件可以提供一定级别的容错能力,这种容错能力一般是采用持久性 的队列来保存消息,这种队列在系统崩溃并重新启动后,能自动的重新恢复消息 队列中的消息,在系统故障时仍能保证消息正常传输。 4 基于税务系统的消息队列中间件的研究与设计 总之,消息中间件的作用体现在两个方面:一是集成大型的分布式应用;二 是确保分布式应用之间的通信,提供可靠的和松散藕合的通信服务 1 2 课题的提出 在中间件技术和消息中间件技术产生的背景下,本文的主要任务就是研究与 设计一个面向网络报税系统的消息队列中间件( 后面我们简称该消息中间件为 m q ) 。我们设计的m q ,其目标在于可靠高效的传输网络报税系统中的业务数据, 并希望在m q 支持下的网络报税系统,从逻辑上可划分为两个部分,一部分负责 程序的主体,另一部分负责访问m q 。这种逻辑上的划分将有利于分布式环境下网 络报税系统的程序编写。无论数据处于多少个不同的主机上,开发者只需在网络 报税系统中写入一些简单的指令,调用m q 提供的接口函数,m q 就会迅速、有 效的在应用程序和各种操作系统、通信协议或数据库系统之间建立起一道“桥粱”, 安全可靠的传递业务数据,使网络报税系统的分布式环境发挥出最佳效能。 1 3 论文研究内容及组织 论文给出一个小型消息队列中间件的设计与实现,该中间件主要面向网络报 税系统,但是也不失一般性,不需过多修改就可以用到同类型的其它行业中去。 该系统能够为网络中分布式应用程序提供基本的消息传递服务,主要实现了 点对点的消息传送,同步消息接收,异步消息接收,可靠消息传送,不可靠的消 息传送等,并为应用提供了三种类型的消息。系统采用客户服务器编程模式实现, 给应用程序提供了简单的接口,方便了应用程序对该系统的使用。 论文分为五章。 第一章,简要介绍本课题的研究背景,论文内容和组织。 第二章,概要介绍中间件的相关技术,对中阃件进行定义和分类。 第三章,讨论消息中间件的关键技术和特点,并介绍了消息中间件的两种通 信模式。 第四章,给出面向网络报税系统的消息中问件系统m q 的系统结构,介绍m q 的相关设计模型和算法。 第五章,介绍了m q 系统的部分模块的详细设计,并在给出了一个基于m q 的一个简单应用实例。 最后,对论文进行了总结,并展望中间件技术发展的趋势。 第二章中间件的相关理论 5 第二章中间件的相关理论 2 i 中间件的概念 中问件( m i d d l e w a r e ) 是基础软件的一大类,处于操作系统软件与用户的分布式 应用软件的中间,属于可复用软件的范畴。中间件在操作系统、网络和数据库之 上,应用软件之下,总的作用是为处于自己上层的应用软件提供开发与运行的环 境,帮助用户灵活、高效地开发、集成、部署各种复杂的应用系统。 由于中间件技术目前仍处于发展之中,因此至今尚不能对它进行精确的定义。 对中间件比较流行的定义是国际数据公司( i d c ) 公司提出的,其描述为:中间件 是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术 之间共享资源。中间件位于客户机胃艮务器的操作系统之上,管理计算资源和网络 通信。 从中间件的定义可以看到中间件不仅仅实现互连,还要实现应用程序之间 的互操作;中间件是一类基于分布式处理豹软件,其最重要的功能是网络通信功 能;同时中间件也是应用级的软件,是一种应用集成的关键构件。 应用 应用 应用编程接口a h 中间件 平台接口 i 操作系统 操作系统 l _ 网络一硬件平台 硬件平台 图2 i 中同件示惹图 由上图可以看出,中间件就是一个基础系统平台( 硬件和操作系统) 与应用 程序之问的一组通用服务,具有标准的程序接口和协议,屏蔽了分布式系统的复 杂性和异构性。针对不同的硬件和操作系统,分布式系统可以有符合接口和协议 的多种实现,使得在异种平台和环境下的数据访问更加方便和一致。从而实现了 松耦合应用程序的开发模式 6基于税务系统的消息队列中间件的研究与设计 2 2 中间件的分类 中间件屏蔽了底层操作系统的复杂性,使程序开发人员只需面对一个简单而 统一的开发环境,将注意力集中在自己的业务上,不必再为程序在不同软件上的 移植而重复工作,从而减少了程序设计的复杂性。给中问件分类是一件困难的事 情,在这里,我们根据中间件在系统中所起的作用和采用的技术的不同,将中间 件划分为五种。 2 2 1 数据访问中间件 在所有的中间件中,数据访闯中间件是产生最早、应用最广泛、技术最成熟 的一种中间件。它位于数据库管理系统和应用程序之问,实现了应用程序和异构 数据库之间的统一接口,有效的解决了应用系统在不同后台数据库之间的移植问 题。例如,o d b c ( o p e nd a t a b a s ec o n n e c t i v i t y ,开放数据库互连,建参考文献 1 9 ) 和j d b c ( j a v a d a t a b a s ec o n n e c t i v i t y ,j a v a 数据库互连,见参考文献 1 9 ) 就是两种 流行的数据访问中间件,它们允许应用程序和本地或者异地的数据库进行通信, 并提供了一套标准的开发接口在开发应用程序的过程中,开发人员只需要建立 一个0 d b c 或j d b c 接口,配置相应的信息,就可以完成和数据库之间的连接,不 同数据库之间的语义差别、目标数据库的实现原理和实现机制等都由作为中间件 的o d b c 和j d b c 来屏蔽,开发人员无需关心。 不过,在数据库访问中间件的处理模型中,数据库是信息存储的核心单元, 数据库访问中间件完成通信的功能。这种方式虽然是灵活的,但是并不适合一些 性能要求高的场合,因为它需要大量的数据通信,而当网络发生故障时,系统将 不能正常工作。 2 2 2 远程过程调用中间件( 瑚) 远程过程调用中间件也已经存在了相当长的时间,它在客户服务器计算方 面,比数据库中间件又迈进了一步。通过这种远程过程调用机制,程序员编写客 户端的应用程序可以在本地调用远端服务器上的过程,远端服务器上的过程再将 运算结果返回给本地程序,其效果就和在本地调用一样。这种调用可以跨越不同 的操作系统平台。 一个r p c 应用分为客户进程和服务进程两部分。它的工作方式如图2 2 所 示:客户进程需要与服务器进程交换信息或者要求服务器进程提供协助时,客户 机进程在本地产生一个请求,客户机函数产生客户机句柄,通过网络调用,通知 服务器端的网络调用接受信息,服务器端接受消息并且同时产生旬柄,交给服务 器函数调用服务进程对消息进行处理。服务进程处理完毕之后将信息过这结果原 路返回给客户进程。 第二章中问件的相关理论 7 络 图2 2 远程过程调用中间件 远程过程调用提供的是基于过程的通信服务,虽然远程服务被映射成本地过程 在语义上降低了分布式处理的复杂度,但它要求客户与服务器直接相连,通信过 程同步,客户调用远程过程之后需要等待其执行返回,降低了灵活性,仅适用于 对于比较小型的简单应用,对于一些大型的需要异步通信的应用,这种方式不是 很适合。因为此时程序员需要考虑网络或者系统故障、处理并发操作、缓冲、流 量控制以及进程同步等一系列复杂问题。 2 2 3 面向消息中间件( m o m ) 消息中间件在不同平台之间通信,实现分布式系统中可靠的、可恢复的( 若 发生意外) 、高效的、实时的数据传输,它常被用来屏蔽掉各种平台及协议之间 钧特性,实现应用程序之间的协同。消息中间件的优点在于能够在客户和服务器 之间提供同步和异步的连接,并且在任何时刻都可以将消息进行传送或者存储转 发这也是比远程过程调用更进一步的原因,另外消息中间件不会占用大量的网 络带宽,还可以跟踪事务,并且通过将事务存储到磁盘上来实现故障时系统的恢 复。 与r p c 相比,消息中间件不支持程序控制的传递。消息中间件适用于需要多 个进程间进行可靠数据传送的分布式环境。它是所有中问件中,最流行的最重要 的中间件产品。现在市场上比较典型的面向消息的中问件产品是有m m 的 m q s e i i c s 和东方通科技的t c m g i 剧的,q 等。 2 2 4 对象请求代理中间件( o r b ) 由于面向对象技术中对象的继承性和封装性以及对外的透明性,为软件的可 重用性提供了很好的基础,同时也符合中问件技术的要求,因此对象请求代理中 间件技术也发展起来了。o r b 为分布式系统中的对象通信提供了一套基础框架, 定义了在分布式系统中对象透明地发送请求和接收响应的基本机制,是建立对象 8 基于税务系统的消息队列中问件的研究与设计 之间客户机f 1 日务器关系的中间件。其基本思想就是在对象与对象之间提供一种统 一的接口,使对象之间的调用和数据共享不再关心对象的通信细节、位置、实现 语言以及所驻留的操作系统。 从管理和封装的模式上看,对象请求代理和远程过程调用有些类似,不过对象 请求代理屏蔽比远程过程调用中间件和消息队列中间件更复杂的信息,并且可以 适用于非结构化的或者非关系型的数据。 o r b 是对象技术和分布式计算发展的产物,它提供一种通信机制,透明的在异 构的分布计算环境中传递对象请求,而这些对象可以位于本地或者远程机器。现 在主要有四种o r b 技术; 对象管理组织( o m g ) 的通用对象请求代理体系结构( c o r b a ) 微软的对象组件模型( c o m d c o m ) j a v a 的远程方法调用( r m i ) j a v a b e :a n c o r b a 和c o m d c o m 这两种技术功能都很强大,但两者有很大的区别,它 们相互竞争,这在一定程度上阻碍了对象请求代理中间件的标准化进程。 2 2 5 事务处理中间件( t p m ) 事务处理中间件是一种复杂的中间件产品,它是一种在分布、异构环境下提 供保证交易完整性和数据完整性的一种环境平台。 和其它中间件不同,事务处理中间件更加注重分布式事务的处理。对于那些 在应用中用到了事务,并且一个事务跨越了网络上多个节点的情况,事务处理中 间件应该是首选。事务处理中间件常与数据库管理系统结合使用,多个数据库管 理系统可以以它为纽带联系起来,尤其是在异构的数据库管理系统之间。 事务处理界于客户和服务器之间,进行事务管理与协调、负载平衡、失败恢 复等,以提高系统的稳定性和整体性能。总体上来说,事务处理中间件有以下三 大功能: 进程管理:包括启动服务器进程、为其分配任务、监控其执行并对负载 进行平衡。 事务管理:即保证在其监控下的事务处理的原子性,一致性、独立性和 持久性。 通信管理:为客户和服务器之间提供了多种通信机制,包括请求响应、 会话、排队、订阅发布和广播等。 比较典型的三种事务处理中间件是m m 的c i c s ,b e a 的t u x e d o 和东方通 科技的t o n g e a s y 。 第三章消息队列中问件 9 第三章消息队列中间件 3 1 消息中间件的定义 面向消息的中间件( m e s s a g eo r i e n t e dm i d d l c w a x c m o m ) 又称消息中间件。 消息中间件是一种由消息、消息趴列、消息传送机制等元素组成的中间件技术, 为应用系统提供可靠的消息通信手段,实现不同操作系统平台、数据库和硬件系 统平台的数据通信,通过使用驻留在内存或硬盘上的队列为消息缓冲,提供分布 应用程序问可靠的信息交换机制,以及分布式系统的应用集成方式。消息队列服 务为完成消息的可靠传输,使用队列方式进行消息管理,中间件可以按照同步或 异步的通信方式发送或接收消息。 为了更全面的了解消息队列中间件,我们需要对消息中间件的一些术语进行 定义并对其关键技术进行介绍。 & 2 消息 消息,从其表现形式上看是由简单的位串或字符串组成,这些位串或字符串 仅仅对某一个或某一类应用程序有意义一个消息除了包含应用所需处理的数据 外,还可能包含其它成分,例如,一个表达业务请求的消息可能就同时包含了数 据和控制信息。在所有的消息系统中,消息被用来在同一个应用的不同进程或不 同应用的不同进程闯进行通信。 对消息中间件系统而言,消息作为一种实体,必须有某一种方式对其进行区 分和操作。因此消息中间件中的消息是由一个带结构的消息头对象和一个消息体 组成。消息头描述消息的类型、长度,目钓地、优先级等属性,消息体是一个不 定长的二进制流,称为应用数据。消息提供者和使用者根据具体的应用定义消息 体的格式。 大多数消息中间件支持消息的持久化持久化消息可靠性较好。在系统出现 故障时可以恢复,但速度较慢,一般这样的消息格式用于金融、商务等对可靠性 要求较高的领域。相应的,非持久消息可靠性差,但传输速度较快,一般用于多 媒体或者实时系统等对速度要求较高的领域。 基于税务系统的消息队列中间件的研究与设计 3 3 消息队列 消息队列技术是分布式应用问交换信息的一种技术。消息队列可驻留在内存 或磁盘上,队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可 独立地执行而不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收 此消息。 消息队列提供消息的存储。客户首先打开消息队列,然后进行消息的存取操 作。消息提发送者把消息放入消息队列,消息接收者从消息队列取出消息。消息 队列可以定义消息的出入顺序,例如先进先出或按优先级等。 消息队列定义在队列管理器中,并由其进行管理。队列的物理性质取决于运 行队列管理器的操作系统。队列可以是计算机内存中易失的缓冲区,也可以是永 久性存储器设备( 如磁盘) 上的数据集。队列的管理是队列管理器的责任,对于参 与的应用程序来说是透明的。 程序访问队列只通过队列管理器的外部服务。它们可以打开一个队列、将消 息放入其中、从中取得消息以及关闭队列,它们也可以设置和询问队列的属性。 由于有消息队列的存在,通信的双方不直接连接,因此这种通信方式具有极 大的灵活性。客户不必在意整个应用系统的拓扑结构,通信的方式是异步的,通 信的一方不必知道另一方的位置,也不要求另一方同时也在运行。 3 4 队列管理器 一个消息中间件会包括很多种消息队列,这些消息队列需要被有效的加以管 理。几乎所有的基于消息队列的中间件产品都有一个专门用于管理消息队列的模 块,这个模块通常被称为“队列管理器”。 队列管理器可以管理多个消息队列,它负责创建、控制、删除一个消息队列, 并通过一定的接口允许应用程序存取消息。应用系统首先需要连到队列管理器才 能打开并使用消息队列虽然基于消息队列的应用程序之间是平行关系,但是应 用程序与消息队列管理器之间仍然是客户服务器结构。队列管理器是消息中间件 的核心组件,它一般位于一台独立的服务器,服务器与客户机形成星型结构。多 个消息队列管理器还可以互相连接形成一个服务器网络,消息在这些服务器之问 转发,从而灵活地把分布式应用扩展到广域网环境。 3 5 消息队列中间件的特点 消息中间件具有以下一些基本特点: 第三章消息队列中间件 1 1 ( 1 ) 提供多种通信方式 通信程序之间不仅可以是一对一的关系,而且还可以进行一对多、多对一, 甚至是上述多种方式的组合。 ( 2 ) 消息可靠传输 通过消息队列,可以对消息进行永久保存,对短暂的系统或网络故障具有可 恢复性。应用程序发送消息时,消息发送者和接收者不一定要求同时在线,消息 中间件可以确保消息接收者在掉线的情况下消息不会丢失,保证了消息的可靠传 输。 ( 3 ) 异步通信模型 应用程序不在网络上直接通话,而是间接地将消息放入消息队列,消息接收 程序在需要的时候从队列取出消息,所以发送程序和接收程序不必同时运行。通 信程序把消息放入队列后不必等待消息的传输及结果的返回,是一个异步的通信 过程。 ( 4 ) 队列的内部排序 消息队列可以采用各种不同的排序方式对队列中的消息进行排序,例如,它 可以采用f i f o 、按优先级排序,也可以按用户定义的关键字段排序,这使得具有 某种特征的消息能够被优先处理。 ( 5 ) 消息路由服务 消息通过该服务可以经过最短路径( 或最低代价) 到达消息目的地。系统管理 员只需要定义每条路径的代价,消息中间件就可以为消息计算出最低代价的路径。 而且,消息路由服务可以避免单点失效,因此非常适合用于不可靠的网络环境中 ( 6 ) 流量控制 采用队列技术,可以方便控制发送、接收队列消息的存放个数和规则,进而 可以方便实现消息发送程序的发送速度,达到流量控制的目的 ( 7 ) 名字服务 消息队列中间件能够向用户提供名字服务名字服务机制可以保存队列名称, 队列位置等信息,应用程序通信时可以方便的访问这些命名实体,进一步达到位 置透明。 ( 8 ) 应用程序的松耦合 消息中间件提供给应用程序标准的h p i ,系统的组件能够运行在不同的操作系 统上,并支持多种通信协议,也可以由不周的语言来编写。换句话说,使用消息 的通信不需要组件互相了解对方的实现细节,并且可以任意移植,实现了松耦合 的程序设计模式。 不同的消息队列中问件产品其特点有所区别,这种区别一般体现在消息队列 中间件产品对消息队列和其它重要组成部分的实现和特征上。我们这里只是综述 基于税务系统的消息队列中间件的研究与设计 了消息队列中间件所具备的一般特征。 3 6 消息中间件的通信模型 消息中间件有两种基本的通信模式;点对点模式和发布订阅模式。 发布订阅是一种一对多的发布模式。此模式中,客户端应用向主题发布消息, 主题反过来被另外对此主题感兴趣的客户所订阅,所有订阅客户将收到该消息。 点到点模式提供传统的排队机制。此模式中,客户端应用通过一个队列发送 消息到一个按某种顺序获得消息的接收客户端。 一般客户端应用可以使用两种模式的混合。发布订阅模式和点对点模式中所 体现的消息均使用相同格式,当使用消息队列中间件接口的时候,可以使用同时 支持两种消息模式的接口和方法,当使用这些接口的时候,消息系统的行为稍有 不同,这是由于两种消息的某些属性域有不同的语法。 3 6 1 点到点模式 点到点模式是建立在消息队列的基础上的:此模式中,允许多个发送者同时 向一个接收者发送消息,但一个消息只能发送给一个接收者。发送者把消息发送 到接收者的消息接收队列,接收者从自己的接收消息队列读取消息。一个消息队 列是表示消息发送者目标及消息接收者数据源的管理对象。 点到点模式的结构如图2 4 1 所示; 图3 1 点到点模式 其特点有: ( 1 ) 实现了消息的异步传输 消息发送者和接收者之间是通过消息队列来完成通信的,消息发送端发送消 息到消息队列上,接收端从消息队列中接收消息,消息发送者和接收者并不直接 相连,这样就允许接收者不必处于运行状态,而且接收者在需要消息的时候才会 从接收队列读取消息。可见这种方式使得消息的异步传输成为可能 ( 2 ) 位置不透明 通信双方需要事先知道对方的标识,这种标识可能是通信对方的名称或其它 可以通过中间件系统名字服务确定其位置的名称。一条消息必须包含明确的目的 地址,才能够被发送到确定的消息队列上,并保存在该队列中,直到被其它消息 第三章消息队列中间件 客户接收为止。 ( 3 ) 定义了消息的发送方式 定义了客户端如何向队列发送消息,从队列接收消息,浏览队列中的消息。 在该模式中,每一条消息队列中的消息只能被一个客户所接收。一旦消息队列中 的消息被消息客户接收后,该消息就被队列删除,其它消息客户就不能再访问该 条消息。 ( 4 ) 提供对队列的管理 一个消息队列由管理员创建,并长时间存在,并提供工具来管理队列的创建、 删除,维护消息队列是一个管理对象,预先配置并保存在名字空间中,客户机 都是通过名字服务查找到它们的实例。 3 6 2 发布订阅模式 发布订阅是一种一对多的发布模式,它基于消息主题,发布消息的客户端只 需要简单地将消息以主题方式发送出去,由消息代理来负责将消息传递给所有订 阅该主题的客户端。发布订阅模式可是使一条消息被多个客户所接收,发布者将 消息发布到某个主题上,多个客户可以同时订阅该主题当然,一个主题也可以 接收多个发布者发送过来的消息。主题使得消息订阅者和消息发布者保持互相独 立,不需要接触即可保证消息的传送。主题同样也是一个管理对象,预先配置并 保存在名字空间中,所有客户机都可以通过名字服务查找到它们的实例如图所 示 图3 2 发布订阅模式 其特点为: ( 1 ) 通过消息代理进行通信 在发布订阅模式中,客户端之间的通信都通过消息通道代理进行,发布消息 的客户端将消息传递给消息代理,由消息代理负责路由消息给相应的订阅消息的 客户端。由于消息代理可以实现消息的动态路由功能,因此,该方式能够提供较好 的容错性能。 ( 2 ) 不需与对方直接建立连接 1 4 基于税务系统的消息队列中间件的研究与设计 在发布订阅模式中,客户端无需与对方直接建立连接即可发送和接收消息, 客户端只需简单地将消息发送给消息代理,由消息代理负责消息的传递,对应用程 序完全透明。 ( 3 ) 多维空间上松耦合 发布订阅模式最大的优点是发布者和订阅者在多维空间上是松耦合的,这 种模式下,客户端和服务器不需要知道对方的地址和具体的数量,这就简化了应用 的配置,并且使组件更易重用。具体体现在: 空间非耦合。发布者和订阅者不必相互知道。 时间非耦合。发布者和订阅者不必同时在线。 数据流非耦合。发布订阅是异步模式。 本文设计的m q 根据其目前的需求,只提供了点对点的通信模式,但是也为 发布,订阅模式的实现预留了接口,为以后程序的扩充做好了准备。 第四章m 0 的总体结构 第四章m q 的总体结构 4 1 功能需求 由上海p o n d e r 公司研发的网络报税系统是一个大型的新型的应用于税务系统 的分布式网络系统,该系统用网络信息传递技术来代替人工申报和缴税。从根本 上改变了税务机关与纳税人之间信息交流方式,通过网络纽带把纳税人和税务机 关联系起来,实现网上报税。构建该系统盼关键之一就是构建一个用于通信的消 息中间件,实现各税务机构的业务数据准确、及时、可靠,高效的传输。 消息队列中间件产品m q ,是上海p o n d e r 公司专门为了网上报税系统协同开 发的面向分布式应用的消息中间件。它为网络环境下c l i e n t s e r v e r 结构的网络报税 应用系统的开发和运行,提供了灵活和易用的平台支持m q 提供多种通信方式, 实时传输,可靠传输,加密传输和压缩传输等在分布式的联机事务处理环境中, 它担当通信资源管理器的角色为分布式应用系统提供实时的、高效的、可靠的、 跨越不同操作系统,不同网络不同数据库的消息传送服务。在要求可靠传输的两 络报税系统中,可以利用m q 作为一个通信平台,用m q 提供的可靠功能来传递 业务数据。同时提供其它辅助功能方便系统的开发和使用。 m q 的开发目前仅在小范围的税务系统中应用而开发的,随着税务系统电子化 的发展,也随着m q 的不断完善,功能的逐渐强大,相信会在税务系统乃至其它 领域都有良好的应用效果和市场价值。 4 ,2m q 系统结构 4 2 1m q 在税务系统中的应用结构 网络报税系统由网上办税中心( 也就是网络税务申报网站) 、纳税服务热线、税 务征管系统、税务银联网系统和m q 组成。网上办税中心为纳税人实现纳税申报 和申报消息反馈提供了交互的平台。m q 为纳税服务提供了统一的数据交换平台, 是网上办税中心。纳税服务热线等外界门户和地市征管系统之间的数据通道。税 务征管系统接收到网上办税中心或者纳税服务热线发送来的数据并进行处理后, 将数据分发到税务征管系统中。得到地市征管系统反馈结果后调用地市税银联网 系统进行扣款处理。地市征管系统对申报数据进行校验。江申报数据写入申报数 据库并反馈申报结果。地市税银联网系统提供对银行的接口实现税款的自动划拨。 m q 在税务系统中的应用结构图如图4 1 1 6基于税务系统的消息队列中间件的研究与设计 纳税服务热线网络税务申报网站 各功能部分各功能部分 j 芒j 芒 税 务 各 、, m 。 、, m o l j 征功 r 管能 弓 管 部 系 分 统 i 税务锻联网系统 电子邮件中心 各功能部分 各功能部分 图4 1m q 在税务系统中的应用结构 从上图可以看出,m q 处于网络报税系统中各相关模块之间,为报税系统提供 了消息通信的功能,其屏蔽了应用基于的各种不同软件平台,向用户提供了一个 统一的应用开发接口,简化了网络报税系统的集成工作。 4 2 2m q 的系统结构 胭的系统结构如下图: 图4 2 嫡系统结构图 由图4 2 可见,m q 主要由应用程序编程接口( m q i ) ,消息队列、队列管理 器、消息通道代理和管理模块等部分组成。m q i 为基于m q 的应用程序提供了简 第四章醵q 的总体结构 1 7 单的编程接口。队列管理器是m q 的核心组件,它负责队列的创建和删除,并控 制队列的行为和调整队列的优先级。消息通道代理负责将消息通过物理链路投递 给其它的消息队列,探测网络通道故障并从故障中恢复也是消息通道代理的工作 数据通道可以预先建立的,并定时检测,也可以在节点间有数据传送时动态建立, 数据发送完后取消。数据通道建立在t c p 连接之上,利用t c p 可靠有序的服务, 为应用提供可靠的消息传送。从图中还可看出,应用程序处于结构图的最上层, 只和应用编程接口打交道,其余的都交给消息中间件提供的底层服务来完成,简 化了用户的编程。 4 3 m q 的编程模型 m q 的程序主要由两大部分实现,c l i e n t 和s e n , e r 。 c l i e n t 部分,主要由客户端和应用程序接口组成,它为客户端保存属性配置, 提供应用程序编程接口( a p d 。a p i 是提供给具体编程语言调用的消息操作函数 库,应用程序通过调用a p i 完成消息通信任务。 s e r v e r 部分,也就是m q 服务提供端,含队歹l j 、队列管理器和消息通道,它实 现了c l i e n t 面向应用程序提供的接口。主要功能是进行队列及用户的创建、维持、 删除等管理工作消息排跌、存储转发等消息处理工作。 消息中间件一般提供两种通信模式,m q 根据应用需求,暂时只提供了点到点 通信模式。但是在编程模式的设计中,充分的考虑到了以后的扩充,为发布订阅 通信模式的设计预留了接口 根据网络报税系统的需求,为了与目前主流应用程序实现无缝接轨,我们采 用j a v a 程序设计语言设计m q 系统 4 3 1m q 的应用构成 1 ) m q 服务端:实现m q 接口并提供管理和控制功能。 ( 2 ) m q 客户l 是用j a v a 编写的生产和消费消息的程序或组件。 ( 3 ) m q 消息
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 职业病知识培训目的课件
- 锻造加热工专业技能考核试卷及答案
- 炭极生产工操作考核试卷及答案
- 煅白制备工标准化作业考核试卷及答案
- 汽车品牌用户满意度调查与分析创新创业项目商业计划书
- 智能铁路运输创新创业项目商业计划书
- 水产品腌制工艺创新创业项目商业计划书
- 智能化压力性溃疡预防垫创新创业项目商业计划书
- 推拿治疗学复习含答案详解【完整版】
- 离心铸管工入职考核试卷及答案
- 全工程咨询管理办法
- 心内科常见疾病健康宣教
- 2025-2030中国重水市场运行态势与未来竞争力剖析报告
- 煤粉锅炉培训课件
- 2025年小学体育课程标准考试测试卷及参考答案
- 建筑业标准员培训
- CNC初级技术员考试试题及答案
- 水处理故障应急预案
- GB 17051-2025二次供水设施卫生规范
- 学校徒步活动方案
- 2025年普通高等学校招生全国统一考试数学试题(天津卷)含答案
评论
0/150
提交评论