(计算机软件与理论专业论文)分布式应用环境下中间件技术探讨与应用.pdf_第1页
(计算机软件与理论专业论文)分布式应用环境下中间件技术探讨与应用.pdf_第2页
(计算机软件与理论专业论文)分布式应用环境下中间件技术探讨与应用.pdf_第3页
(计算机软件与理论专业论文)分布式应用环境下中间件技术探讨与应用.pdf_第4页
(计算机软件与理论专业论文)分布式应用环境下中间件技术探讨与应用.pdf_第5页
已阅读5页,还剩58页未读 继续免费阅读

(计算机软件与理论专业论文)分布式应用环境下中间件技术探讨与应用.pdf.pdf 免费下载

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

文档简介

电子科技大学硕士学位论文:分布式应用环境下中间件技术探讨与应用 摘要 学科名称:计算机软件与理论 论文题目: 分布式应用环境下中间件技术探讨与应用 硕士生:汤志凤( 0 0 s 0 6 0 4 8 )导师:邱会中副教授 随着计算机技术的迅速发展,特别是网络技术的发展,计算机的应用越来越 广泛和深入。各种旧有应用不断扩充,新的应用不断增加,各i t 部门面临的问题 也越来越多。诸如不同的硬件平台、不同的网络之间、不同的数据库之间的互操 作,多种应用模式并存,系统效率低下、传输不可靠、数据加密、开发周期长等。 传统的系统软件和工具软件已经不能解决诸如此类的问题,中间件技术的出现为 这些问题提供了较好的解决方案。广7 在探讨中间件技术的基础上,本文橛述了中间件技术的发展历史、中间件的 概念、分类、中间件的特点等基础知识,并对交易中间件、消息中间件等几类常 用的中间件进行了讨论,着重论述了面向消息队列中间件和面向消息传递中间件 的实现机制和特点。根据实际的应用环境,设计开发了特定的分布式应用环境下 的专用中间件银行代收中间件。本文由两部分组成: 中问件技术的探讨:主要论述消息中间件和交易中间件的实现机制和关键 技术。 应用实例:根据消息中间件和交易中间件的实现机制和关键技术,设计和 开发了特定的分布式应用环境下的专用中间件银行代收中间件。 关键字; 中间件分布式环境 消息事爷广7 电予科技大学硕士学位论文:分布式应用环境下中间件技术探讨与应用 a b s t r a c t m a j o rs u b j e e t :s o f t w a r ea n dt h e o r yo fc o m p u t e r s u b j e c t : t h er e s e a r c ha n dd e v e l o p m e n to fm i d d l e w a r eo nd i s t r i b u t e da p p l i c a t i o n s y s t e m m a s t e r c a n d i d a t e :t a n gz h i f e n ga d v i s e r :p r o f q i l lh u i z h o n g w i t ht h es w i f t d e v e l o p m e n t o f c o m p u t e rt e c h n o l o g ye s p e c i a l l y t h e d e v e l o p m e n to fc o m p u t e rn e t w o r k i n g ,t h ea p p l i c a t i o no fc o m p u t e rt e c h n o l o g yi sm o r e a n dm o r ed e e p e ra n dw i d e r n ce x i s t i n ga p p l i c a t i o n sk c e pe x t e n d i n ga n dt h eu f w a p p l i c a t i o n sk e e pc o m i n gf o r t h 。s ot h ep r o b l e m si td e p a r t m e n t sc o n f r o n tw i t hi sm o r e a n dm o r e f o rt h ei n t e r a c t i o na m o n gt h ed i f f e r e n th a r d w a r e ,t h ed i f f e r e n tn e t w o r ka n d t h ed i f f e r e n td a t a b a s e s ,t l l e r ea r em u l t ir n o d e se x i s t i n g ,a n di tr e s u i t si nl o we f f i c i e n c y , u n c r e d i b l et r a n s f e r e n c ea n d d a t a - e n c r y p t l o n a n d l o n gd e v e l o p m e n tc y c l e t h e t r a d i t i o n a ls y s t e ma n dt o o l ss o f t w a r ec a l lr i o ts o l v es u c hp r o b l e m s ,b u ta p p e a r a n c eo f m i d d l e w a r e p r o v i d et h eb e t t e rs o l u t i o nt ot h e s ep r o b l e 船 b a s e do nt h ed i s c u s s i o no fm i d d l e w a r e ,t h i st h e s i sd e m o n s t r a t e st h eh i s t o r y , t h e c o n c e p t ,t h ec l a s s i f i c a t i o na n dt 】1 e c h a r a c t 硎s t i c so fm i d d l e w a r e a n di td i s c u s s e st h e g e n e r a l u s e dm i d d l e w a r e , s u c ha st r a n s a c t i o n p r o c e s s i n g m i d d l e w a r ea n d m e s s a g e o r i e n t e dm i d d l c w a r e ,a n de s p e c i a l l yd e m o n s t r a t e st h ei m p l e m e n t a t i o na n d f e a t u r eo fm e s s a g e q u e u e - o r i e n t e d m i d d l e w a r ea n d m e s s a g et r a n s f e r r i n g - o r i e n t e d m i d d l e w a r e a c c o r d i n g t ot h e p r a c t i c a la p p l i c a t i o ne n v i r o n m e n t ,w ed e s i g na n d i m p l e m e n tt h es p e c i f i cm i d d l c w a r eu n d e rs p e c i f i cd i s t r i b u t e de n v i r o n m e n t 。b a n ka g e n t r n i d d l e w a r e t h et h e s i sc o n s i s t so f t w o p a r t s : t h ed i s c u s s i o no u r n i d d l c w a r e :m a i n l y d e m o n s t r a t et h e i m p l e m e n t a t i o n m e c h a n i s ma n dk e y t e c h n o l o g yo ft r a n s a c t i o np r o c e s s i n gm i d d l e w a r ea n d m e s s a g e o r i e n t e dm i d d l e w a r e ; a p p l i c a t i o nc a s e :a c c o r d i n gt o 曲ca b o v em e c h a n i s ma n dk e yt e c h n o l o g y , w e d e s i g n a n d i m p l e m e n t t h e s p e c i f i c m i d d l e w a r eu n d e rd i s t r i b u t e d e n v i r o n m e n t - b a n ka g e n tm i d d l e w a r e k e yw o r d s :m i d d l e w a r e d i s t r i b u t e de n v i r o n m e n t 、! m e s s a g e t r a n s a c t i o n - 一 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他入已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名: 逝互= 西日期:庐。拜;月细 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名: 溘芝盎函导师签名 日期:多 电子科技大学硕士学位论文:分布式应用环境下中间件技术探讨与应用 第一章绪论 随着计算机应用的扩展,各种旧有应用不断扩充,新的应用不断增加,各i t 部门面临的问题也越来越多。诸如不同硬件平台、不同网络之间、不同的数据库 之间的互操作,多种应用模式并存,系统效率低下、传输不可靠、数据加密、开 发周期长等。传统的系统软件和工具软件已经不能解决诸如此类的问题,中间件 因此应运而生。 目前,国际上较为成功的中间件技术有t h eo p e ng r o u p 的d e c r p c ,m i c o r s o f t 的m s r p c 和c o m d c o m ,以及o m g 的c o r b a 。尤其是c o m d c o m 和c o h b a ,其技术不 断趋于成熟,正越来越广泛的应用于软件开发的实践中,并出现了许多比较成熟的 产品。但同样也存在一些问题。以目前广为熟知的c o r b a 为例,正因为它是一个 通用的异构的分布式开发平台,所以它的效率不高,在诸如一些对实时性要求较 惠的应用就不能满足需求。而且,大多数中间件是类似的,不同的是他们的接口 和优化性,没有一个中间件满足所有应用的需要。为此,我们可以针对不同的应 用领域,设计开发出不同的中间件,以便更为灵活的满足用户的需要。 中间件的开发方法也多种多样,采用m i c r o s o f t 的c o m d c o m ,或o m g 的c o r b a 都是开发者不错的选择。目前市场上有大量的基于c o m d c o m 和c o r b a 的标准中间 件开发工具。其面向对象的编程方法,可视话的开发技术使中间件的开发十分方 便。但熟悉或测试这些工具需要花费较大的精力,购买软件需要一定的经费开销; 更重要的是不利于编程人员针对具体的应用开发出针对性强、专业性强的应用产 品。因此,我们提出了基于自定义协议的中间件开发方法。基于自定义协议的中 间件开发的一般思路与总体框架如同目前流行的c0m dc0m 或c0rba , 中间件应具有客户端和服务器端两部分。其中,客户端负责处理各种客户请求, 服务器端负责管理诸多的服务项目。 本课题设计的银行实时代收费系统就是使用中间件技术的实例,也是自己开 发专用中间件的实例。银行代收费系统中,使用自定义中间件银行代收中间 件来处理银行和电信的通讯,并对交易进行调度、监控和管理。银行实时代收费 系统将运营商( 如电信、电力、自来水公司) 的收费点扩充到银行,充分利用银 行现有网络及服务窗口资源,极大方便了广大的用户,是提高运营商服务质量的 有力措旌。以前四川各地、市拥有的银行代收系统多为非实时方式,按一定周期 ( 月或天) 由银行与运营商交换数据,采用此种方式,不能从根本上解决用户的 重复缴费问题。存在一定的遗憾。而本系统采用运营商网络与银行网络的互联, - 1 - - 电子科技大学硕士学位论文:分布式应用环境下中间件技术探讨与应用 实现实时代理收费,从而作到实时、安全的反映用户缴费情况。与银行联网以后, 最大的好处在于利用了银行现有的计算机网络和营业网点,并且这些网点已经延 伸到了每一个县。运营商网络与银行网络之间只在总局建立了一个接口,就可解 决整个本地网所有区县的银行代收问题。 然而,要与银行的网络相连,除了要相应的硬件设备以外,还必须有与银行 连接的接口程序,能够实现不同操作系统、不同网络之间的通信。采用商业的中 间件如东方通公司的产品t o n g l i n k q 或b e a 公司的t u x e d o 都是价格不斐,且对 机器的要求较高。因此,我们针对银行代收费的具体情况,设计了银行代收费中 间件,用以运营商与银行的连接,处理与银行的通信。适用于电信、电力、交通 等公司和单位。 本文从中间件的基础知识开始,介绍中间件的相关背景、发展历史、概念、 分类、特点等, 然后详细讨论了消息队列中间件和消息传送中间件的实现机制、 特点。最后介绍了自定义中间件银行代收费中间件的设计与实现及其在四川电 信公司银行代收项目中的应用,以及系统需要进一步完善的地方。 2 一 电予疆技大学硬士学搜论文:分毒式应塌环境下审阉 孛技术探讨与瘫用 第二章巾问馋的相关理论 本章先介绍中间件技术的相关背景及菇发展魇史,然艏讨论审问侔的概念帮 分类,为以后的讨论奠定瑗论基础。 2 1 中间件的相关背景 中间件概念早在二十世纪七十年代末就提出了,但是中间件的迅速发展却是 在客户辍务器攘型提1 t t # 2 嚣,疆豢诗葬瓿嬲络,特剐是i n t e r n e t 豹发矮褥迅速 发展的。夜八十年代末期,中间件被描述为连接网络管理的软件。在九十年代初 簸,中阕传主要是瘦用在蕊予关系型数据蓐的应髑中,到了九十年代中期,网络 技术得到了广泛深入的应用,中间件技术也被广泛使用,产生了大量使用中问件 豹应用实例。中间传是一个壤念藏嚷,现凌中闻传的含义穗经超出了他剐刚出现 时的含义,是一种黼络操作系统,分布式操作系统和分布式计算环境下的通用服 务。 中间件通常应用在分布式环境下的客户j f i 务器模式中。客户服务器模型对 于巾阃 孛筑迅速发篾毒萋熬要麴意义。下颡终对雾户摄务器模型避行灸镪积分 析。 2 。王。l 窖户溅务器攮式 客户服务爨模式是一秘试强改善可躅性( u s a b i l i t y ) 、交互撼( i n t e r o p e r a b i l i t y ) 、伸缩饿( f l e x i b i l i t y ) 和可扩展性( s c 8 1 a b i l i t y ) 的纂于消息的多用 途钓摸块饯结构。 客户机服务器模式( c 1 i e n t s e r v e r ) 是现在广泛采用的网络应用模式。这 秘模式孛,疫瑶稷廖霹戳簇蔓逶接,携溺王终。不过参翔避绩翦嚣拿瘦震疆滓豹 作用各不相同。其中一个威用程序燕动发起通信,称为客户机;另一个应用程序 被动她等德,稼麓羧务器。 在客户服务器模式中,客户或客户程序代表了需要获得服务的方;服务器 或擞务翟黟是摇提供鼹努懿一方。雾户程瘳耪羧务翟痔在滋髯土蔗糖互独囊静对 象,他们通过网络涟接在一起来完成任务。客户方向服务方提出申请,并接受服 务方透露匏痘答;鼗务方较牧客户方豹请求,然嚣懿莲请求,最囊蒋请求缮栗返 回给客户方。 电子科技大学硕士学位论文:分布式应用环境下中间件技术探讨与应用 客户程序在用户的个人计算机上本地运行,主动向服务器发出服务请求,直 接被用户调用,只在需要时运行; 服务器程序在一台共享的计算机上远程运行,被动地等待来自客户的请求, 通常在系统启动时自动调用,持续运行。 客户服务器模式的发展经历了单层、双层、三层、多层结构。单层结构是 8 0 年代以来小型应用的结构,典型的是基于d b a s e 、f o x b a s e 等小型数据库的应 用。双层结构的同义词可以理解为传统的客户服务器结构,是目前占统治地位的 结构,赡型是基于o r a c l e 、i n f o m i x 等大型数据库的应用。三层结构即分布式应 用是传统的客户服务器结构的发展,代表了企业级应用的未来,典型的有w e b 下 的应用。多层结构和三层结构的含义是一样的,只是细节有所不同。 之所以会有双层、三层这些提法,是因为应用程序要解决三个层面的问题。 一:界面层 。 界面层提供给用户一个视觉上的界面,通过界面层,用户输入数据、获取数 据。界面层同时也提供一定的安全性,确保用户不会看到机密的信息。 二:逻辑层 逻辑层是界面层和数据层的桥梁,它响应界面层的用户请求,执行任务并从 数据层抓取数据,并将必要的数据传送给界面层。 三:数据层 数据层定义、维护数据的完整性、安全性,它响应逻辑层的请求,访问数据。 这一层通常由大型的数据库服务器实现,如o r a c l e 、s y b a s e 、m ss q ls e r v e r 等。 在多层体系中,各层次按照以下方式进行划分,实现明确分工: 瘦客户:提供简洁的人机交互界面,完成数据的输入输出; 业务服务:完成业务逻辑,实现客户与数据库对话的桥梁。同时,在这 一层中,还应实现分布式管理、负载均衡、f a i l r e c o v e r 、安全隔离等; 数据服务:提供数据的存储服务。一般就是数据库系统。 多层分布式体系主要特点有: 安全性:中间层隔离客户直接对数据服务器的访问,保护了数据库的安全; 稳定性:对于要求2 4 * 7 工作的业务系统,多层分布式体系提供了更可靠 的稳定性:l 、中间层缓冲c l l e n t 与数据库的实际连接,使数据库的实 际连接数量远小于c l i e n t 应用数量。当然,连接数越少,我们的数据库 - 4 - 电子科接大学弼士学位论支:分蓐式应簿环境下审阉 孛技术探讨与斑趣 系统就越稳定。2 、f a i l r e c o v e r 机制能够在一台服务器当机的情况下, 透明地把客户端工作转移到其他具有同样娥务功能的服务上。 易维护:嬲予韭务逻辑在巾闼鼹务器,当渡务援划交纯惑,客户蝼程序 基本不做敬动; 抉速璃应:逮过受载均餐戳及审秘层缓孝数撰能力,戳缝褰对答户蝼 的响应速度; 系统扩展炎活:基于多层分布体系,当篷务增大时,霹以在孛闰鬃部署 更多的应用服务嚣,提高对客户端的响应,而所有变化对客户端邂明。 多餍分布应掰的开波特点: 分布式多层体系的开发主要考虑三方礞的鼓本,善先鼹舞发环境,开教人员 需嚣一种创建新组件、并将已有组件加以黧成的开发环境。其次跫应用程序的集 成,_ 歼发人员嚣要煞成各秽应用程序,以创建出更强大的皮用。第三是应用程序 的配置,分布式多朦体系的开发需簧配置平台的支持,以便在用户剃增时黼有效 地扩展,并保持系统的稳定。 目前多艨分布陂用的开发,比较重要的有两种规范,既c o m 和c o r b a 。其中 c 酬主要用于w i n d o w s 平螽,c o r b a 剥提擞跨乎台的能力。同时,遮羞分砖式应 用的发展,旧的硬件软件平台的不断更新,跨硬件平台、网络环境、操作系统以 及跨不同数据痒的戍甩系绫不甄出现,使我们传统麴开发誓具越来越路入撼魑境 地,因此中间件应邀而生。 2 。l ,2 客户联务器模式豹特性 客户服务器模式的特征如下: 非对称协议( a s y m m e t r i c a lp r o t o c o l s ) : 骞户方秘疆务方是一耱多黠一瓣关系,遴零客户方逶过发送请浓寒发怒次 对话,而服务方只鼹被动的簿待客户方请求的到来。 嚣装了翡簸务( e n c a p s u l a t i o no fs e r v i c e s ) : 服务器就像一个瓷深专窳,当请求消息剐达服务方时,它决定怎样处理请求 潜意。暴妥双方的潸惠接口没鸯改变,嗣服务器的畀级或更改不会彩响客户 方,即服务对客户说是拊装了的。 完整性( i n t e g r i t y ) : 溅务器熬捩鹨秘数摆是絮孛维护装,遂撵苓约了维护成零,势绦护了荚攀数 - s 电子科技大学硕士学位论文:分布式应用环境下中间件技术探讨与应用 据的完整性。而客户端仍然保留了其独立性和个性。 分布的透明性( l o c a t i o nt r a n s p a r e n c y ) : 服务器是一种处理,它可以和客户端安装在同一台机器上,也可以安装在网 络中的不同的机器上。客户服务器软件通常通过客户再申请服务来隐藏服务 软件的位置。一个软件可以是服务者,或者客户,或者既是客户又是服务者。 基于消息的交换方式( m e s s a g e - b a s e de x c h a n g e s ) : 客户和服务器之间是一种松耦合的关系。它们以消息的方式来交换服务申请 和应答。 模块化和可扩展性( m o d u l a r ,e x t e n s i b ed e s j g n ) : 客户服务器模式的模块化设计使得应用具有容错能力。在有容错能力的系统 中,当错误发生时,不会使整个应用结束。在有容错能力的客户服务器模式 的应用系统中,当一个或多个服务失败时,只要这种错误可以被检测到,就 不会使整个系统都死掉。模块化设计的另一个好处是系统有很好的可扩展性。 平台独立( p l a t f o r mi n d e p e n d e n c e ) : 理想的客户且艮务器软件是独立于硬件系统和操作系统的,客户软件和服务器 软件可以在混合的平台中运行。客户和服务器软件可以配置在不同的硬件环 境,不同的操作系统中。 代码的可重用性( r e u s a b l ec o d e ) : 服务程序可以使用在多个服务器上。 可伸缩性( s c a l a b i l i t y ) : 客户服务器模式的系统在横向和纵向的伸缩性都很好。横向伸缩性是指增加 或减少客户工作站的数量,对系统的性能影响非常的小。纵向的伸缩性是指 将系统移植到更好的机器上或增加处理器。 客户和服务器功能上是分开的( s e p a r a t i o no fc l i e n t s e r v e rf u n c t i o n a l i t y ) : 客户服务器模式中,客户和服务器可以在同一个机器上,也可阱在不同的机 器上。 服务器是提供服务的一方,客户是消费服务的一方,客户和服务器在功能上 是分开的。 共享资源( s h a r e dr e s o u r c e s ) : 一6 - 一个服务器可以向多个客户提供服务,并且协调遮些胍纷凋弛铲强涨”。蝴h 。 2 1 3 两层客户男酲务器模式和三层客户服务器模式的区别 每种客户服务器模式的应用都包括三种功能单元: 表示鬃或臻户赛嚣( p r 8 s e n t a t i o nl o g i co ru s e ri n t e r f a c e ) 函数,关闭由c o n n e c t 函数建娃的连 接s ,从而结束本次会话。 前面说明了内部接口函数,下面我们介绍银行代收中间件提供的外部接口函 数。提供熬於郝接口也分为客户斌翻鼹务蠛。 代收赞中间件客户端摅供的接口函数肖: 细n i t o , t p ca l l t p t e r m o , t p s e n d o ,秘e c v o ,下覆我 】分鄹奔绍。 i n t t p n t ( c h a ru i d ,c h a rp a s s ) 应用程序在使用代收费中间件提供的接口函数之前,必须先调用t p i n i t ( ) 遁数。应瘸程骞在调用了t p i n i t ( ) 嚣数以居,裁可以调翅请求躏数了。t p 堇n l t - 3 5 - 电子科技大学硕士学位论文:分布式应用环境下中间件技术探讨与应用 ( ) 函数对系统进行初始化,使得应用程序加入代收费中间件。参数用户和口令 用于检查用户的合法性,如果不正确将不能使用中间件提供的接口。在程序离开 代收费中间件时,必须调用t p t e r m 0 函数,即t p i n i t 0 函数和t p t e r m 0 函数是 成对出现的。 c h a r * 丁p c a l l ( c h a rn a m e ,c h a 胁p a r a ) 应用程序调用t p c a l l ( ) 函数来请求服务端提供的服务。参数n a m e 是服务 的名称,p a r a 是请求该服务需要的参数信息。调用完毕后,返回请求的应答信息。 t p c a l l 0 函数将参数组织为内部的信息,进行加密处理,然后利用消息中间件的 接口s e n d ( ) 函数传送信息,然后等待服务器的请求,利用消息中间件的r e c e v ( ) 函数来接收从服务器返回的应答信息,进行解密,然后送给客户端的应用程 序。t p c a l l ( ) 函数采用的是同步通信模式,客户端程序在调用t p i n i t ( ) 函数 t p c a l l ( ) 函数以后,必须等待服务端返回结果,不能继续进行其他的操作。 i n tt p s e n d ( c h a rn a m e 。c h a r * p a r a ) 应用程序也可以通过调用t p s e n d 0 函数来向服务端发送服务请求。n a m e 是请 求服务的名字,p a r a 是服务需要的参数信息。调用完毕,返回整型数值,大于0 说明调用成功,等于0 说明调用失败。t p s e n d ( ) 也是先将参数信息转化为内部 消息,然后进行加密,最后调用消息中间件的s e n d ( ) 函数将请求发送到服务方。 t p s e n d 0 函数与t p c a l l 0 不一样,t p s e n d 0 采用的是异步的通讯方式,在客户端 调用完t p s e n d 0 函数以后,客户端程序可以进行其他的操作,不必等待服务端的 应答返回,当应答返回时,调用t p r e c v 0 函数就可以获得。 i n tt p r e c v ( i n ti ,c h a r * s t r ) 应用程序通过调用t p r e c v ( ) 来接收从服务端返回的请求应答信息。i 是调 用t p s e n d ( ) 时返回的整型值,s t r 是存放请求应答信息的字符指针。当应用程 序在调用了t p s e n d ( ) 函数以后,就可以调用t p r e c v ( ) 函数。当应答消息到达 时,就会触发t p r e c v ( ) 函数利用消息中间件的r e c v o 函数,从对方接收消息, 然后进行解密,放入参数s t r 中,以便客户端应用程序使用。 i n tt p t e r m 0 该函数没有参数,在客户程序不再使用代收费中间件时,应该调用t p t e r m ( ) 函数来退出代收费中间件。该函数将应用退出中间件,结束联结,释放资源。该 函数应与t p i n i t ( ) 函数成对使用。 代收费中间件服务端提供的接口函数有: - 3 6 电子科技大学硕士学位论文:分布式应用环境下中间件技术探讨与应用 t p s r v i n i t0 7t p r e t u r n0 ju s e r l o g0 ,t p c a l lo ,t p s e n d0 、t p r e c v 0 , t p s h u t d o w n 0 。还有对数据库操作的函数,我们下一小节专门讨论。 l h tt p s r v i n i t ( c h a ru i d ,c h a r * p a s s ) 服务端应用程序首先要调用t p s v r i n i t o 函数,来启动中间件,初始化中间 件系统,启动监听程序,等待客户端的连接请求,还包括连接数据库等工作。这 样在服务端中间件启动时,就完成了对数据库的连接,以后要访问数据库就都使 用该连接,减少了数据库的连接,也减少了连接数据库的开销,这样提高了系统 的效率和系统对请求的响应速度。成功返回1 ;失败返回0 。参数u i d 和p a s s 是 用户和口令。只有一致的用户和口令才能使用代收费中间件提供的服务。 i n tt p s h u t d o w n ( c h a ru i d ,c h a r * p a s s ) 当服务器想停止代收费中间件的服务时,可以使用t p s h u t d o w n ( ) 函数。该 函数将释放资源,结束与数据库的连接。成功返回l ,错误发生时返回0 。参数 u i d 和p a s s 是用户和口令。只有一致的用户和口令才能使用代收费中间件提供的 服务,关闭中间件。 i n tu s e r l o g ( c h a r * s t r ) 该函数用来记录系统日志。s t r 是要记录的内容,是以字符串的形式记录的。 代收费中间件系统有一个系统日志文件,记录系统的重要信息。用户也可以调用 u s e r l o g 0 来记录日志。该日志文件每天一个,以日期为名,以便系统的管理。记 录是以追加的方式记录到日志文件的。不同的日期就会记录到不同的文件中。文 件存放的目录缺省时是在代收费中间件的子目录下,也可以通过配置文件设置路 径。该日志文件主要用来记录一些信息,以便发生错误时,容易定位错误。 i h tt p r e t u r n ( c h a r * r e t ) 在服务结束时,服务方应向客户方回送服务结果,此时应使用t p r e t u r n ( ) 函数。r e t 是向客户端返回的服务结果。函数成功时返回1 ,失败时返回0 。 服务端也有t p s e n d 0 、t p r e c v 0 、t p c a l l 0 函数,这与客户端的同名函数是 一样的。因为服务端也可以象客户端一样,向自己或别的服务器请求服务。 服务方还有一个重要的函数t p a s s i g n0 。 t p a s s i g n ( c h a r * p m c v ) 该函数利用消息中间件收到客户端的请求,然后对消息进行分析处理,根据 消息中请求的服务名,对照名字服务对照表,调用对应的服务进程。对于同一时 间可以使用的进程数可以通过参数配置。当系统的进程数小于最大进程数时,来 - 3 7 电子科技大学硕士学位论文:分布式应用环境下中间件技术探讨与应用 一个请求,就对照名字服务对照表,调用对应的服务程序;当系统高度繁忙时, 如果进程数达到了最大值,系统就将请求缓存起来,当有服务完毕了,才启动进 程来处理缓存起来的请求。在缓存请求时,请求放在队列中,请求的处理采用先 进先出( f i f o ) 的处理方式。 4 7 对数据库操作的函数 银行代收中间件目前支持对o r a c l e 、s y s b a s e 数据库的支持。我们通过对这 o r a c l e 数据库的o c i 接口和s y s b a s e 的o d b c 接口进行封装,向用户提供了访问 数据库的简单易用的编程接口,这些主要接口有:c o n d b 0 、g e t c o l d a t a 0 、 c h e c k e r r ( ) 、e x e c u t e 0 、b e g i n t r a n 0 、c o m m i t ( ) 、r o l l b a c k ( ) 、h a n d i e r e t u r n ( ) 、s e n d s q l ( ) 、b i n d c o l u m n s 0 、f e t c h r o w ( ) 、g e t d a t a 0 、d i s c o n n e c t 0 等。 i n tc o n d b ( ) 调用此接口,可以建立中间件到数据库的连接,以方便应用程序使用。首先 到配置文件中获取连接数据库的信息,建立各种语句旬柄,建立到数据库的连接 通道。成功返回1 ,失败返回0 。 i n td i s c o n n e c t0 调用此接口,释放建立连接时分配的各种句柄,释放资源,断开中间件与数 据库的连接。成功返回1 ,失败返回0 。 i n te x e c u t e ( ) 调用此接口,可以对数据库进行操作,比如i n s e r t 、d e l e t e 、u 1 ) d a t e 、s e l e c t 等操作。成功返回1 ,失败返回0 。 b e g i n t r a n ( ) 、c o m m i t ( ) 、r o l l b a c k 0 这些接口是对事务的管理操作。比如有一组操作要作为一个事务提交,则在 开始之前调用b e g i n t r a n 0 ,然后执行事务,如果成功了就使用c o m m i t ( ) 提交事 务,如果没有成功则调用r o l l b a c k 0 回滚事务。三个函数都是成功返回1 ,失败 返回0 。 c h a r h a n d l e r e t u r n ( ) ,c h a r * g e t d a t a 0 h a n d l e r e t u r n ( ) 接口返回执行e x e c u t e 0 时返回的结果。g e t d a t a 0 从 h a n d l e r e t u r n ( ) 的返回集中按要求获取数据。返回值都是字符指针,如果调用 失败,返回为空。 一3 8 - 电子科技大学硕士学位论文:分布式应用环境下中间件技术探讨与应用 ! f i l l i q lu i i 。, , 一i i i i 竺! 苎苎! 苎 v o i dc h e c k e r r ( ) 该接口判断出错的各种情况,并记录日志,以便查找和处理错误a c h a r f e t c h r o w ( ) 该接口的功能是将执行数据库后的返回结果放入返回结果集,以便 h a n d l e r e t u r n ( ) 返回结果。 4 8 系统接口的调用 调用中间件提供的接口是有顺序的。下面分别介绍内部接口和外部接口的调 用顺序。内部调用接口客户端的调用顺序如左下图,服务端的调用顺序如右下图。 在客户端,每发送一次请求,都要与服务端建立连接,然后发送,然后等待 返回结果,最后关闭本次连接以结束本次会话。每次会话都是相对独立的。服务 端在启动以后就一直监听客户端的请求,当有请求到达时,就对其进行处理,然 后将结果返回给客户端。 图4 - 5 内部接口客户端的调用顺序 图4 - 6 内部接口服务端的调用顺序 一3 9 - 电子科技大学硕士学位论文:分布式应用环境下中间件技术探讨与应用 外部接口的调用顺序也有一定的要求。首先我们来说客户端的调用顺序。在 客户端,应用程序首先要调用t p i n i t ( ) 对中间件客户端进行初始化,将应用加 入到中间件。然后就可以调用t p c a l l ( ) 进行服务请求或调用t p s e n d ( ) 和 t p r e c v ( ) 进行异步模式的服务请求。在使用完成后,需要调用t p t e r m ( ) 退出中间件,释放资源。t p i n i t ( ) 和t p t e r m ( ) 总是成对出现。 图4 7 客户端外部接口调用顺序 在服务端,首先要调用t p s r v i n i t ( ) 函数,对中间件进行初始化,准备服 务,等待客户端的请求。然后就可以调用t p a s s i g n ( ) 对服务请求进行分配和处 理了。同时可以使用u s e r l o g ( ) 函数记录重要事件或错误信息。也可以使用t p s e n i i ) ( ) 和p r e c v ( ) 、t p c a l l ( ) 等作为客户端转发请求。最后在要退出中间件时 需要调用t p s i i u t d o w n ( ) 释放资源。如图4 - 8 。 下面我们来讨论服务端的设计方案。看看在银行代收中间件的服务端是采用 循环的处理请求还是并发的处理请求好。 服务端的设计方案可以分为两类:循环的处理请求和并发的处理请求。在构 造服务器前必须在两种基本方法之间做出明确的选择。因为在循环实现和并发实 现之间的选择是非常重要的。这会影响整个程序的结构,影响觉察到的响应时间 以及服务器处理多个请求的能力。如果在设计过程之初就决策失误,改变决策的 开销将会很高。循环的、面向连接的服务器使用一个单个的进程。该进程永远循 环,使用一个插口处理入请求,并用另一个临时的插口处理与客户机的通信。其 进程结构如图4 - 9 。 一4 0 电子科技大学硬士学位论文:分布式应用环境下中间件技术探讨与应用 图4 8 服务端外部接口调用顺序 使用面向连接运输的服务器在这些连接上不断循环:在知名端口上等待来自 客户端的下一个连接、接受连接、处理连接、关闭连接,然后再次等待连接。 并发的服务器有一个主服务进程( m a s t e rs e r v e r ) ,等待客户机到来的请求。 一旦新的请求到来就创建一个新的从进程( s l a v ep r o c e s s ) 处理每个新的连接, 并允许各个从进程处理与客户端的通信。进程结构图如图4 一i o 。 藏 用于请求连用于单个连 接的插口接的插口 图4 - 9 循环的服务器进程结构图 由此可以看出,服务器的循环实现可能表现欠佳,因为它要求某个给定的客 户端等待此服务器处理在这以前到达的请求。如果一个客户端要发送大量的数据, 电子科技大学硕士学位论文:分布式应用环境下中间件技术探讨与应用 循环服务器在处理完该请求前,会让所有的其他客户机延迟。并发的服务方式就 可以实现避免长时间的延迟,因为它不允许单个的客户端占有所有的资源。一个 并发服务器使其可以与多个客户端同时进行通信。 所以,在服务端选用了并发的服务器方式。在服务端,打开中间件后,中间 件处于准备就绪状态,一旦有连接建立请求,就可以为之建立一个新的连接,一 次会话就可以开始了。会话结束,关闭这个新的连接。在建立了新的连接后,中 间件又处于准备就绪状态,可以响应新的请求了。这样,服缈尚可以同时处理多 个请求。 j l uuu 用于请求连接用于单个连接的插口 的插口 图4 - 1 0 并发服务器进程结构图 4 9 系统的大数据包传递设计 在传送消息时,对于较短的消息的时候,中间件可以分配一个大小匹配的缓 冲区来发送消息。但是传送的消息有的很大,比如在本系统中,晚上对帐的数据 量就很大,把全天的交易数据都要传送出去;有的消息又特别的小,比如查询话 费的请求,只是一条命令。如果每次不论消息长短都分配一个固定大小的缓冲区, 显然是对资源的浪费,而且不可实现,不可能知道最大的消息长度。如果每次都 根据消息大小而动态分配缓冲的大小,时间的开销较大,而且,大消息申请缓冲 区时,一次申请太大的缓冲容易失败也不太实际。 综合考虑,我们将消息分为两类。小于等于1 4 0 0 个字节,就直接分配缓冲 区发送出去。如果大于1 4 0 0 个字节,就将消息保存为文件,然后每次按照1 4 0 0 字节大小循环传送。由于采用的是t c p i p 协议,保证了传送的可靠信和顺序性, 接收时,比较简单,不必考虑消息是否丢失或消息是否需要重新排序。我们将消 4 2 电子科技大学硕士学位论文:分布式应用环境下中间件技术探讨与应用 息的大小按1 4 0 0 字节为界限有两个原因。第一,是因为我们针对代收费中间件 来设计的,在代收费时,运营商和代理商之间传送的是用户的费用查询信息,交 费信息,这些信息的大小都超不过1 4 0 0 字节。只有对帐的信息量很大,需要按 文件的方式来传送。第二,我们采用的是t c p i p 协议,该协议的传送方式是按 分组传送的,每次每个分组的大小最大是1 5 0 0 字节即最大传输单元( m t u ) ,这 样我们的消息大部分都能在个分组中传送,既一次就可以传送出去,提高了传 送的效率,减少了传输的次数。 4 1 0 系统的事务处理 代收费中间件是一个针对代收费的分布式联机交易处理系统的中间件。它为 分布式环境下联机交易处理应用系统的开发和运行提供灵活和易用的平台,保证 联机交易系统运行的高效性和数据的完整性,同时提供其他的辅助功能方便系统 的开发和使用。 一个代收费中间件构造的应用,其工作方式如图所示。应用系统为客户服 务器三层结构,客户程序向服务程序申请服务请求并等待应答,交易过程为;客 户程序使用代收费中间件提供的接口,向代收费中间件提交请求,代收费中间件 利用自身的消息处理机制,将请求传送到服务方。服务方的代收费中间件从消息 处理机制中接收请求,并根据交易类型将请求送到相应的服务程序。服务程序通 过代收费中间件提供的接口接收请求,进行相应的处理,处理结束后再将结果通 过代收费中间件传送到客户方程序,完成一笔简单的交易。 客户端程序 代收费中间件 交易处理 代收费中间件 消息处理机制 服务端程序 代收费中间件 交易处理 代收费中间件 消息处理机制 图4 1 1 代收费中间件基本工作方式 交易是联机交易处理的基本单位,也称事务。交易可以简单理解为一组操作 的集合,操作的执行将使系统从一个状态转换为另一状态,可能的操作包括数据 通信、业务逻辑处理和对共事资源的操作。交易存在四个基本特性: - 4 3 电子科技大学硕士学位论文:分布式应用环境下中间件技术探讨与应用 原子性:一个交易所做的操作要么全部成功,要么全部失败。 一致性:一个交易把一个合法对象( 比如一条记录) ,从一种有效状态转变 为另一种有效状态,如果该交易被放弃,则此对象回退到交易 开始前的状态。 隔离性:一个交易对对象的操作效果在其提交前,对于其他交易是不可见 的。 永久性:一个成功的交易被提交后,其对对象的操作结果是永久性的,若 要取消该操作结果,必须通过另

温馨提示

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

评论

0/150

提交评论