




已阅读5页,还剩62页未读, 继续免费阅读
(计算机应用技术专业论文)afc系统通信中间件的研究与设计.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
r e s e a r c ha n d d e s i g no fc o m m u n i c a t i o nm i d d l e w a r e o na f c s y s t e m z h a n gl i a n g c h u n b e ( h u n a nc i t yu n i v e r s i t y ) 2 0 0 8 at h e s i ss u b m i t t e di np a r t i a ls a t i s f a c t i o no ft h e r e q u i r e m e n t sf o rt h ed e g r e eo f m a s t e ro f e n g i n e e r i n g m c o m p u t e ra p p l i c a t i o nt e c h n o l o g y l n c h a n g s h au n i v e r s i t yo fs c i e n c e t e c h n o l o g y s u p e r v i s o r p r o f e s s o rl o n gp e n g f e i m a r c h ,2 0 1 1 长沙理工大学 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所 取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含 任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重 要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本 声明的法律后果由本人承担。 作者签名: 歌醋 日期:沙i1 年瑚曲日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意 学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论 文被查阅和借阅。本人授权长沙理工大学可以将本学位论文的全部或部 分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手 段保存和汇编本学位论文。 本学位论文属于 l 、保密口,在年解密后适用本授权书。 2 、不保密囤。 ( 请在以上相应方框内打“) 作者签名:咏寰羞 日期:沙、f 年岁月汕日 导师签名: 毵夕 日期:y 、1 年歹月蝈 摘要 随着城市化进程的加速,城市人口暴增,城市交通压力越来越严重。中国各大 城市都在想方设法解决这方面的问题,其中就投入了大量人力物力财力进行城市轨 道交通的建设,因此城市轨道交通智能化和信息化的发展空间巨大。自动售检票 ( a u t o m a t i cf a r ec o l l e c t i o n , a f c ) 系统作为轨道交通智能化设备的重要组成部分, 其信息化建设一直备受重视。中间件技术作为一种前沿的软件应用技术,在各种软 件系统中发挥着集成度高、可复用性强和提高应用开发效率的优势。本文通过对中 间件,特别是通信中间件的研究,阐述了一种通过通信中间件来提高a f c 系统软件 可靠性、降低开发成本、缩短开发周期的开发体制。 本文根据通用性和易维护性原则设计了一种基于消息的通信中间件,同时利用 具备兼容性的c 抖和s o c k e t 开发技术,封装了一套为各种系统应用软件提供统一接 口的通信模式。该通信中间件屏蔽网络连接,不再考虑通信方面的细节问题。在具 体实现过程中,运用了以下几点技术来优化通信中间件的性能:采用多线程技术并 发通信,提高了数据传输效率,降低了c p u 的占用率;对紧急信息开辟实时的通道, 对其做专门的处理,尽可能减少这类消息的延时;对所有消息实行优先级控制,建 立数据缓冲机制,应用程序在轮询消息队列时,优先检测级别高的消息队列;提供 了加密过程,确保数据传输过程中的安全。 根据实际应用情况,使用通信中间件后,简化了a f c 系统的开发,提高了应用 软件的开发效率,使开发人员更加专注于对具体业务的研究。 关键词:中间件;消息队列;并发处理;s o c k e t a b s t r a c t w i t ht h ea c c e l e r a t i o no fu r b a n i z a t i o np r o c e s sa n dt h ee x p l o s i o no fu r b a np o p u l a t i o n , p r e s s u r eo nu r b a nt r a n s p o r tb e c o m e sm o r ea n dm o r ei n t e n s e m a n yb i gc i t i e si nc h i n aa r e t r y i n gt os o l v et h i sp r o b l e mt h r o u g hi n v e s t m e n t so fag r e a td e a lo fh u m a n ,m a t e r i a la n d f i n a n c i a lr e s o u r c e si nt h ec o n s t r u c t i o no fu r b a nr a i lt r a n s i ts y s t e m ,s ot h ei n t e l l i g e n c ea n d i n f o r m a t i o nt e c h n o l o g yd e v e l o p m e n to fu r b a nr a i lt r a n s i th a sag r e a tp o t e n t i a l ;a f c ( a u t o m a t i cf a r ec o l l e c t i o n ) s y s t e ma c t i n g a sa n i m p o r t a n tp a r t o f i n t e l l i g e n t r a i l t r a n s p o r t a t i o ne q u i p m e n ta n di t si n f o r m a t i o nc o n s t r u c t i o nh a sa l w a y sb e e ng i v e np r i o r i t y m i d d l e w a r e , a sac u t t i n g - e d g es o f t w a r ea p p l i c a t i o nt e c h n o l o g y , i nav a r i e t yo fs o f t w a r e s y s t e m sh a sal o to fa d v a n t a g e ss u c ha sah i g hi n t e g r a t i o n ,ah i 曲r e u s a b i l i t y , a n dab e t t e r a p p l i c a t i o nd e v e l o p m e n te f f i c i e n c y t h r o u g hs t u d y i n gt h em i d d l e w a r e ,t h ec o m m u n i c a t i o n m i d d l e w a r ei np a r t i c u l a r , t h i sp a p e rd e s c r i b e st h ed e v e l o p m e n ts y s t e mw h i c hc a ni m p r o v e a f cs y s t e m ss o f h n a r er e l i a b i l i t y , l o w e rd e v e l o p m e n tc o s t sa n ds h o r t e nd e v e l o p m e n tc y c l e 、 d t l li t sh e l p a c c o r d i n gt ot h ep r i n c i p l e so fc o m m o n a l i t ya n de a s y - m a i n t a i n a b i l i t y , am e s s a g eb a s e d c o m m u n i c a t i o nm i d d l e w a r ei s d e s i g n e d ,w h i l et a k i n ga d v a n t a g e so fc + + a n ds o c k e t t e c h n o l o g i e s ,ac o m m u n i c a t i o np a t t e mo fu n i f i e d i n t e r f a c e f o rd i f f e r e n t s y s t e m sa n d a p p l i c a t i o n si sd e s i g n e d t h ec o m m u n i c a t i o nm i d d l e w a r ec a ns h i e l dt h en e t w o r kc o n n e c t i o n a n dt h u si ti sn e e d l e s st oc o n s i d e rt h ec o m m u n i c a t i o nd e t a i l s i np r a c t i c a li m p l e m e n t a t i o n , s e v e r a lt e c h n i q u e sa r eu s e dt oi m p r o v et h ep e r f o r m a n c e :t h em u l t i t h r e a dt e c h n o l o g yf o r s i m u l t a n e o u sc o m m u n i c a t i o nt oi m p r o v et h ed a t at r a n s m i s s i o ne f f i c i e n c ya st or e d u c et h e o c c u p a n c yr a t eo fc p u ;t h er e a l - t i m ec h a n n e lf o re m e r g e n c em e s s a g e sa st or e d u c et h ed e l a y ; t h ep r i o r i t yc o n t r o la n dd a t ab u f f e rf o ra l lm e s s a g e sa st o g i v ep r i o r i t yt oh i g h e rp r i o r i t y m e s s a g ei np o l l i n gm e s s a g es e q u e n c e ;e n c r y p t i o np r o c e d u r eo fd a t at r a n s m i s s i o na st o g u a r a n t e et h es e c u r i t y t h er e s e a r c hs h o w st h a tt h ea p p l i c a t i o no fc o m m u n i c a t i o nm i d d l e w a r ec a ns i m p l i f yt h e d e v e l o p m e n to fa f cs y s t e m ,i m p r o v et h ed e v e l o p m e n te f f i c i e n c yo fa p p l i c a t i o ns o f t w a r ea n d e n a b l et h ed e v e l o p e r st og i v eah i g h e rf o c u so nt h es p e c i f i cb u s i n e s s k e yw o r d s :m i d d l e w a r e ;m e s s a g eq u e u e ;c o n c u r r e n tp r o c e s s ;s o c k e t 目录 摘要i a b s t r a c t i i 第一章绪论 1 1 研究背景及意义一1 1 2 国内外研究现状2 1 3 本文所做的工作:3 1 4 本文的内容组织3 第二章中间件技术分析 2 1 中间件的概述5 2 2 通信中间件的几种形式6 2 2 1 远程过程调用6 2 2 2 会话编程6 2 3 面向消息的中间件技术一7 2 3 1 消息传递的相关概念8 2 3 2 消息中间件的结构1 0 2 3 3 消息队列技术1 2 2 3 4 消息路由1 3 2 4 网络通信协议15 2 4 1t c p 传输控制协议15 2 4 2u d p 用户数据报协议16 第三章a f c 系统通信中间件的分析与设计 3 1a f c 系统简介18 3 1 1a f c 系统结构1 8 3 1 2a f c 系统功能需求1 9 3 2 通信中间件总体设计2 1 3 3 通信管理器设计2 1 3 3 1 功能说明- 2 2 3 3 2 通信管理器结构2 2 3 4 用户接口设计2 4 3 4 1 功能说明2 4 3 4 2 用户接口的结构2 4 第四章a f c 系统中间件实现 4 1s o c k e t 技术一2 6 4 1 1s o c k e t 基础2 6 4 1 2s o c k e t 通信实现2 7 4 2 自定义通信协议2 9 4 2 1 本地通信协议。2 9 4 2 2 业务通信协议3 0 4 3 通信中间件的消息处理机制3 l 4 3 1 消息传递方式3 2 4 3 2 并发机制。3 3 4 3 3 消息队列优先级调度一3 3 4 3 4 拥塞控制3 4 4 4 通信中间件的具体实现3 5 4 4 1 功能模块划分。3 5 4 4 2 系统接口3 6 4 4 3 内部处理通信流程3 8 4 5 仿真实验4 0 4 5 1 实验环境4 0 4 5 2 实验软件。4 0 4 5 3 实验数据4 1 4 5 4 实验结论4 2 结论与展望4 3 参考文献4 4 致谢4 7 附录( 攻读硕士学位期间发表录用论文) 4 8 1 1 研究背景及意义 第一章绪论 随着城市化进程的加速,城市人口暴增,城市交通压力越来越严重。中国各大 城市都在想方设法解决这方面的问题,其中就投入了大量人力物力财力进行城市轨 道交通的建设。与公路运输,水运等交通方式相比,轨道交通用地面积省、运输能 力大、环境污染小等特点更适宜于经济实力相对雄厚的大中城市交通发展。目前, 国内像北京、广州、上海等大城市已经拥有较为完善的轨道交通网络,就广州来看, 至2 0 1 0 年底开通运营的地铁线路就达到8 条,其他城市已经批准开工建设城市轨道 交通项目达到2 3 个,据统计,全国“十一五”期间建设城市轨道交通1 5 0 0 公里左右, 总投资额在4 0 0 0 5 0 0 0 亿左右【1 】。可以说,中国的城市轨道交通行业随着经济建设 的飞速发展和科学技术的不断进步,已经步入一个跨越式发展的新阶段,城市轨道 交通智能化和信息化的发展空间也因此巨大。自动售检票a f c ( a u t o m a t i cf a r e c o l l e c t i o n ) 系统作为轨道交通智能化设备的重要组成部分,其信息化建设当前备受 关注。 中间件技术【3 1 作为一种面向对象的技术是伴随网络的快速发展而起来的。最初的 计算机系统没有分布式网络的概念,多是通过联机终端来访问的独立系统。随着网 络的普及,服务器端客户端的网络服务模式被建立起来1 3 1 ,多个客户端可以共同访问 打印服务器和数据库服务器等等。随着各种网络的进一步发展,许多软件系统需要 在不同厂家的硬件平台、通信协议、通信产品等不同结构环境下运行,从局域网到 广域网的应用规模也在不断扩大。在这种情况下,服务器端客服端模式兼容性不强 等局限性也就显现出来了,就此中间件应运而生。中间件是一类连接应用和软件组 件的计算机软件,中间件包括一系列的服务,以便于运行在网络中的多个软件进行 交互。中间件技术所提供的互操作性,通常支持用于分布式应用程序的分布式体系 架构的推进。中间件技术在连接管理、调度和负载平衡方面起了很大的作用,同时 满足了关键业务的需求,大幅提升了企业级应用的性能。 城市轨道交通自动售检票( a f c ) 系统是_ 二个集信息管理和控制于一体的综合管 理系统。在终端设备、车站系统、中央计算机系统和城市轨道交通票务清分系统之 间的网络通信,直接影响自动售检票系统数据传输的稳定性和可靠性1 4 l 。中间件,特 别是通信中间件是很多大型软件系统中的重要组成部分,它对简化系统、降低成本、 提高软件的鲁棒性和使得系统易于移植都有很大的好处。a f c 系统作为一个网络化 的系统,在实际应用中,通信中间件能够为自动售检票系统提供提高其系统性能的 很多服务,如监控服务、通信服务、并发服务等。 1 2 国内外研究现状 在国外经济比较发达城市,轨道交通己经发展到比较先进的技术水平,并 普遍应用到了a f c 系统。我国城市轨道交通发展比较晚,最初车站的自动售检 票设备,自己还不能生产,基本上是来自国外,不过近年来我国针对轨道交通 信息化已进行了大量的研究开发工作,并实际生产出了多种形式的产品,无论 是硬件还是软件技术水平都在不断提高。随着线网的形成和发展和轨道交通资源 的大量投入,许多信息化企业和集成公司都开始开发和研制a f c 系统,为此必然会 需要将不同公司的产品集成进来。国内目前城市轨道交通a f c 系统软件开发商已经 具有一定的规模,但都不是很成熟,具体原因就在于开发商必须具备一般只是运营 商熟悉的丰富的票卡业务管理经验,才能更好的将其理念融入到程序设计中。目前 国内这方面的专家还较少,所以国内的专业厂家对国外软件设计的依赖性还很强, 用户在自动售检票系统的维护和升级方面,暂时往往也只能从国外厂家得到很有效 的帮助。 通过分析这种情况,为了弥补a f c 系统开发能力不足的缺陷,国内开发相关系 统的集成商和设备厂家应主动寻找合作机会,使轨道交通自动售检票系统国产化得 以全面实现。国内这些相关的系统集成商和研发厂家通过聘请国际上经验丰富的自 动售检票系统设计专家,参与和指导a f c 系统软件设计,建立实用、全面、严谨、 高效的程序库,逐步实现a f c 系统国产软件的标准化。随着轨道交通的不断普及, 线网中各种系统将越来越多的与a f c 系统进行联系和交互,软硬件的维保工作量加 大,技术难度也会提高,因此a f c 系统的发展工作重心将逐步转移到获得最高效率 和最佳质量的维护方式。a f c 系统作为一个分布式系统,将中间件技术应用到其中 在当前也有了一定的研究。 中间件技术从开始研究到现在的日趋成熟,已经有二十多年。中间件产品 多种多样,这是由于需求广泛性及应用复杂性所决定的。中间件的开发针对某一领 域逐步细分,既保障了其通用性,有可充分发挥其优势,并可避免软件资源的浪费。 当前,集成化中间件产品的企业级应用已经上线,这种中间件通过研究、设计与开 发等一系列的过程支持了其他大型应用系统的开发,取得了很好的效果。国际上i b m 和微软等公司通过在中间件产品中集成模型驱动架构( m o d e ld r i v e n a r c h i t e c t u r e ,m d a ) 工具为信息系统的网络应用层、业务逻辑层、前台显示层提供全 方位的支撑。国内金蝶等公司也已经研究开发出了功能强大的中间件产品,应用在 我国大型的信息化建设项目上。目前,中间件也已经成为分布式系统应用全生命周 期支撑工具。中间件不是一个完整的系统,它只能作为一个应用系统开发和运行的 支撑平台,它和很多软件构件一样,为软件工程的效率优化等带来方便,所以当前 软件构件库管理平台随着中间件的发展将更加受到关注。中间件等软件构件等到迅 速的发展,进行构件的独立开发商已经出现,基于构件的软件开发成为软件开发的 主流。 a f c 系统作为一个分布式网络系统,它的硬件和操作系统平台具有多样性,如 何简化其应用软件的开发也成为当前轨道交通信息化建设研究的热点。 1 3 本文所做的工作 本文设计和实现了应用于a f c 系统的通信中间件,力争做成一种安全性能高与 各平台兼容的通信中间件,其中所做主要工作如下: 1 、通过对中间件,特别对基于消息的通信中间件进行分析,并对通信协议以及 各平台下的s o c k e t 通信原理的分析,提出了a f c 系统的通信中间件的设计方法。 2 、提出本通信中间件的通信模型,并对该模型下的通信管理器、客户通信接口、 通信协议等进行了具体的设计。 3 、通过c + + 编程实现中间件,模拟a f c 系统环境测试其功能,基本达到应有 效果。 1 4 本文的内容组织 本文通过对a f c 系统的通信要求和特点分析,设计和实现了一款基于a f c 系统的 通信中间件,全文的内容组织结构为: 第一章介绍了本论文课题的研究背景及意义,接着叙述了a f c 系统和中间件的研 究现状,然后描述了本论文所做的主要工作和内容组织。 第二章对通信中间件的消息队列、网络协议等关键技术进行了比较和分析。 第三章对a f c 系统中各级终端的通信特点进行分析,对通信中间件进行总体的设 计和模块功能分析。 第四章利用s o c k e t 技术实现通信中间件的通信功能,并通过实验验证其功能和性能 要求。 论文最后针对本文所设计的中间件结合a f c 系统作了一个总结,提出了几点展望。 2 1 中间件的概述 第二章中间件技术分析 二十世纪八十年代初,人们开始研究并开发中间件产品,最初它仅仅用于管理事物 以及消息通信。直到九十年代,随着网络技术的飞速发展以及企业中实际应用的需要, 人们对于中间件的需求越来越多样化,中间件技术的划分也越来越细,与此同时各企业 也开发出了了各种各样的中间件产品。九十年代末期,中间件已经被明确的分成了五大 类,即消息、远程调用、数据访问、事务处理以及对象请求代理等中间件研。从此以后, 随着电子商务行业的不断发展以及企业信息化建设的要求越来越高,由于各种各样类型 的需求影响,中间件产品的类型越来越丰富,中间件的内涵以及外延也得到了更大的扩 展。中间件平台的主流技术主要是面向对象的中间件技术,主要代表是s u n 公司研发的 e j b j 2 e e 、m i c r o s o f t 研发的c o m + d n a 以及o m g 研发的c o r b a + o m a t l 4 】。面向对象 的中间件技术的研究重点主要是建立规范的对象请求代理,对网络中的计算机,操作系 统,编程语言以及网络协议的异构性和复杂性进行屏蔽,促使网络中的各种应用系统可 以共同协作,为各种网络应用提供共同服务,如先进网络管理服务、一些应用领域的增 值服务等。 由于中间件技术的发展速度非常快,产生了一些变化,所以研究者们对中间件技术 进行了再次分类,分别是以下几种:通信中间件、直用服务器、数据集成中间件、应用 集成中间件、流程集成中间件和b 2 b 应用集成中间件。其中,通信中间件基本包括了传 统中间件中的所有分类。 通信中间件一般用来解决不同应用或系统间的通信问题,安全可靠的为上层提供来 自下层的消息传递服务。用数据表述抽象的表示应用接口,对分布式系统中隐藏的通信 传输进行抽象化,为了处理各种集成问题准备了特定的通信模式,保证在一定条件下能 够达到事务处理的目的。 为了使客户能够隔离底层进行通信,中间件还提供了一个接口,因此不同系统之间 的用户可以使用该接口进行通讯,对于编程技术人员也是相当便利的。它既不需要网络 平台中的硬件条件一致,也允许操作系统和网络协议存在差异,可以在不同的网络平台 之间进行通信,在分布式系统之间实现了跨平台通信的可靠性、高效性以及实时性,使 5 得各种应用程序可以在不同的网络平台上顺利运行,真正达到了互相通信的目的。 通信中间件的通信模型主要分为以下两种:请求响应、消息传送。前者对通信模式 的主体进行了限制,即限于请求或者是响应的双方。由于请求通信的一方差不多都会被 阻塞,直到接收到另一方的响应,因此以请求响应模式为基础的应用更接近单一进程的 应用。但是以消息传递为基础的应用则对自身与外界进程之间的通信很清楚,因此它们 许可希望通信的进程无论何时都可以发送请求,并且设计的风格非常明显。 2 2 通信中间件的几种形式 通信中间件的形式一般分为以下三种:远程过程调用、会话编程以及消息队列中间 件。下面分别对这三种形式的基本思想以及特点进行讨论。 2 2 1 远程过程调用 远程过程调用作为同步的对话方式模型,当本地应用程序提出请求时,远程过程调 用提供服务是通过远程应用程序来实现的。主调者与被调者之间存在一条专用逻辑连 接,远程过程调用利用该连接为应用程序提供了一种“调用返回 的同步通信机制。 此时主调程序一直被阻塞,直到被调程序完成且返回一个信号为止。基于远程过程调用 通信的应用程序一般分为两种,即主调与被调程序,双方之间基于“客户机j j 艮务器 模 型进行通信。远程过程调用的主调程序的结构非常简单,通常是基于连接的且同步的。 由于被调者与服务器相当,必须支持大量主调程序,且需要执行很多功能与服务,因此 远程过程调用的被调程序虽然也是基于连接的、同步的,结构却非常复杂。远程调用过 程与常规的过程调用非常相似,但是其执行过程在远程系统发生而非本地。 2 2 2 会话编程 会话编程的对话通信模式是同步的。应用程序之间提供了以应用程序为基础的一条 私有逻辑连接,会话通信方案就是利用该逻辑连接进行通信。在整个通信期间,只有参 与通信的应用程序双方能够拥有该逻辑连接。私有对话存在于两两进行通信的应用程序 之间,而且其中每个单独的应用程序都同时能够参加多个对话。基于会话编程的应用程 序的操作方式往往是同步的,并且结构比较单一。若程序逻辑比较单一,需要专用的逻 6 辑连接,比方说信息交换序列比较长时,通常使用会话编程的方式。 会话编程的使用方与提供方在对方的通信系统中具有一个等价的逻辑单元。当两个 应用程序在进行对话时,这两个逻辑单元及其之间的逻辑连接将为应用程序准备特定的 网络通信。在会话通信方案中,应用程序之间可以互相通信,为了使应用程序之间的相 关度进一步提高,需要在系统底层进行通信编程的工作量比较大。 2 2 3 消息队列中间件 消息队列中间件作为一种应用程序之间异步的通信方式,它是利用消息队列为程序 提供接口。在消息队列中间件中,应用程序与网络、远程应用程序之间的相关度不必很 高,通信的应用程序双方也不必同时运行。消息队列管理器作为消息队列的容器及处理 单元,是在消息中间件中处于核心地位的。消息队列中间件支持应用程序向消息队列传 入或者获取消息,应用程序之间传递消息能够利用共享队列来进行。基于消息队列中间 件的应用程序逻辑上是没有联系的,应用程序仅仅使用队列组成多种方法互相联系。 目前一种比较流行的通信模型是队列化消息传递,它的简要特点就是不需要接口用户之 间具备逻辑上的连接。消息队列中间件的使用者与提供者的联系简要描述为:消息的发 送者或者接收者与消息传递者、消息排队的关系。客户机服务器模式下的分布式系统 适用于队列化消息传递,其基本思想是通过消息队列对通信双方的请求及相应进行统一 处理,把客户端与服务器隔离开来。消息队列中间件使用的编程接口比较简单,基于消 息队列中间件的应用程序也并不复杂,并且应用程序的完整性、可移植性、一致性易于 实现。 2 3 面向消息的中间件技术 面向消息的中间件是一种把不同系统或应用的软件相互联系起来的支撑平台,这种 平台是通过消息的发送和接收并处理,使用程序接口或者比较灵活的方式来集成应用程 序。面向消息的中间件在进行消息缓存和转发的基础上还能解决应用程序间信息的非同 步传送和在异构平台之间的通信,从而支持分布式系统中稳定的、效率高的数据交互。 7 2 3 1 消息传递的相关概念 在分布式应用中,不同的应用进程之间传递的信息统称为消息。消息一般包含 两个部分:数据和描述。数据库查询或应用程序数据等组成了消息的数据部分;消 息格式和数据长度等的定义等组成了消息的描述部分。消息的接收者和提供者在进 行消息定义的时候需要相互讨论,得出消息的内容和具体格式,这样才能有效的按 照规则进行消息传递解析,最终得到需要的数据。消息的形式不一定,既可以是一 个简单的数据包,也可以是一个大的文件。消息的收发和传递方式以及消息在中间 件与应用程序之间转发传送都有多种形式。 1 ) 消息的收发方式 ( 1 ) 阻塞方式 所谓阻塞方式就是一种同步的消息收发方式,它需要用户进程在进行消息发送 或接收过程中等待单个过程的完成,在进程未结束当此发送或接收过程时将会阻塞。 如果是比较长的消息,阻塞过程就会相对较长,所以如果是应用场景中长消息较少, 需要传送大量的短消息时,可以使用此种方式。 ( 2 ) 轮询方式 所谓轮询方式就是用户进程设定一个定时器或者死循环方式不断的查询消息的 发送和接收情况,等到检测到收发完毕就进行下一次消息的收发。在此之前,用户 进程在调用发送或接收过程后,立即返回。这种消息收发方式不会使某一段程序过 程的阻塞,但是实现的时候需要增加轮询的代码,消息的收发和处理函数也将结合 起来,增加了这方面的难度。 ( 3 ) 回调方式 所谓回调方式就是用户进程在进行消息的收发和处理过程中结合多线程技术分 别处理消息收发和处理的各个过程。作为具有收发功能的主线程在调用消息收发过 程后,立刻返回,主线程可以继续执行下面的其他程序,把消息的处理转交给事先 编写好的消息处理线程,同时利用回调函数获取相应的收发处理情况,这种收发方 式适合于比较大的消息传递。这种方式保障了主程序的效率,但开发难度比较高。 2 ) 消息的传递方式 ( 1 ) 同步方式 所谓同步方式就是消息交互时,消息的接收者和发送者双方必须同时在线,把 8 接收和收发过程统一为一个整体,一个接收需要与一个发送匹配,不然会发生消息 传递错乱。 ( 2 ) 异步方式 所谓异步方式就是消息交互时,消息的收发双方不必同时在线,当发送方发送 完数据后,数据进入到一个数据缓冲区,发送方可以继续自己的过程,而不必关心 发送后具体的处理过程。消息中间件通过将消息的发送和接收分离开来,并建立内 部的消息缓冲区,使消息的发送和接收成为相对独立的过程。具体在发送方,只需 将消息传入缓冲队列就可以,接收方设定一个定时器对消息队列进行轮询,如果队 列中有消息,即做出相应的处理。 3 ) 消息的转发传送 消息在传输过程中可能需要经过多次转发,在使用消息中间件时,消息中间件与 底层系统隔离了应用程序,因此对于应用程序来说消息的传递是透明的。消息在进 行多次转发的过程中形成了一个消息路由,这种路由就像一个消息链。消息的开始 发送端应用程序被称为消息源,消息链的每个结点被称为消息转发站,最后接收消 息的应用程序被称为消息接收终端。但是消息在传送过程中出现了一个问题,那就 是消息在何时销毁,是在每个消息转发站传完消息后即消除还是等整个传递过程完 成再消除,因此转发传送可分为两种:接力应答转发传送和循环应答转发传送。 ( 1 ) 接力应答转发传送 接力应答转发传送是指消息传送过程中每个参与消息传递的结点在收到消息 时,主动向紧邻的发送方返回确认消息。当紧邻的发送方在收到确认消息后,就可 以认为消息已经到达接收方,因而发送方可将此消息清除。通过这种方式,消息的 传送结点就只需向前一个结点发送确认消息即可,接力应答转发传送其传递方式如 图2 1 所示。 f 匣、 m mm m l 用 q qq q u 1 23 r l 图2 1 消息的接力应答转发传送 消息的接力转发传送这种技术不能有效的保证消息在传递过程中不被篡改,而 9 且要求每一级消息中转者保存消息的副本,因此对中转者的性能要求高。 ( 2 ) 循环应答转发传送 循环应答转发传送跟接力应答转发传送方式在形式上的区别在于消息在传送过 程中,每个消息转发消息结点无需向前一个发送结点返回确认消息。消息接收终端 在接收到消息后,生成一个确认消息,经过消息链发送到消息的开始发送端,开始 发送端在接收到确认消息后就将此消息进行清除。如果经过一定的时间还没收到确 认消息,消息开始发送端将重发消息。其传递方式如图2 2 所示。 图2 2 消息的循环应答转发传送 消息循环应答转发传送对消息中转者的要求不高,因为在这种传送过程的消息 链中中间节点不需要保存消息的副本。但是,消息链中任意中转者一旦消息丢失, 都将导致在一定时间内消息的重发,在特殊情况下严重影响系统的性能,加大网络 的负担。消息接收者在此时将需要处理比较复杂的消息重发程序。 2 3 2 消息中间件的结构 1 ) 客户服务器结构 基于客户服务器结构的消息中间件是由用户利用客户端进行通信,简单的过程为: 客户将消息传送给服务器端,服务器端对消息进行路由和转发。 微软的m s m q ( m i c r o s o f tm e s s a g eq u e u e ) 4 1 1 即是一种客户服务器结构的消息中间 件产品,m s m q 有四种不同的服务器安装:主企业控制器、主站点控制器、备用站点 控制器、路由器【1 7 1 。 ( 1 ) 主企业控制器 主企业控制器是微软消息队列结构的底层,它可以使消息中间件实现基本的功能。 对于每个企业内部网络来说,都必须包含一个主企业控制器。这个控制器往往安装在公 司的核心部门,这是由于所有其他的服务器都应该可以访问和注册主企业控制器。假设 公司的内网只是建立在一个简单的局域网之上,那么需要的服务器仅是主企业控制器, 1 0 而且它可以与i i s 结合在一起使用。在大型企业中,主企业控制器用于其它m s m q 服务 器的位置和用户信息的存储,并可以在各个服务器之间路由消息。 ( 2 ) 主站点控制器 公司城域网的远程分支或站点中往往存在一个主站点控制器。主站点控制器能与远 程局域网上的本地客户通信,并将信息反馈给主企业控制器。每个分支或站点都分配一 个主站点控制器,提供返回主企业控制器的单点通信。这对远程站点是重要的,在网速 较慢的网络中,这种服务器有利于节省系统资源。 ( 3 ) 备用站点控制器 主站点控制器中的只读信息副本就是使用备用站点控制器来存储的,往往每个分支 站点都安装一个备用站点控制器。如果主站点控制器崩溃或者失效,它可以提供相应的 支持。 ( 4 ) 路由器 路由器为消息的传递提供有效途径,服务器利用路由器可以使用不同的网络协议进 行相互通信。m s m q 路由服务器并不会存储通信消息,它只能确定所需传送消息的最 佳路径。这种路由服务器在网络断开时能够发挥很好的作用,它会尝试查找到达目的端 的其他路径。各个分支站点都要求包含主站点服务器或者主企业站点服务器,所以路由 器也就绑定在每个站点。 独立客户和从属客户作为m s m q 中的两种客户,分别具有不同属性和用途。 a 独立客户 独立客户具备给其他消息队列中间件服务器发送消息和从其他消息队列中间件服 务器中读取消息的能力。此中间件的独立客户往往安装在应用程序服务器或网络服务器 上。独立客户还可以存储本地消息,所以它们不会依赖于目标机器上的中间件服务。对 于c o m 组件或网页脚本来说,中间件服务器不能使用,但需要发送消息的时候,独立 客户就能够发挥其有效的作用。此时,独立客户能够在当前本地工作队列中存储消息, 直到中间件服务器变为可用,才继续转发消息。独立客户能够利用文件和注册表等存放 消息到本地队列。 b 从属客户 从属客户不能像独立客户那样可以存储本地消息,也不可以在其他服务器上组建队 列和从消息队列中异步读取消息。当从属客户访问消息队列中间件服务器时,只能发送 和读取消息。终端用户对消息处理的响应处理需求不大,所以从属客户往往安装在终端 用户平台中。 2 ) 多级节点结构 节点是指一种应用程序运行环境,由中间件支撑起来的虚拟计算机平台。一个节点 能够相当于一个业务处理终端。不同节点也可以同时位于相同的一台计算机上运行。在 分布式网络中应用消息中间件,与本地节点直接通信的上一层节点,即接收本地消息的 节点叫做中心节点又被称为消息开始发送端的上级节点。当作为客户进程的一端请求消 息,服务进程经过相应处理生成回复消息应答客户方。与本地节点直接通信的下一层节 点,即发送消息到本地的节点被称作该本地节点的下级节点。对于大部分的实际应用, 在处理相关细节和业务问题时,上级节点比下级节点发挥了更大的作用。如图2 3 更加 明了的描述了多个节点中间的关系,其中设立三个节点,分别为x ,y z 。在x 节点上运 行应用程序x ,用于向相邻节点传递消息。y 节点上运行应用程序y ,它用于从x 节点 上接收消息,再将消息转发到z 节点上。在z 节点上运行应用程序z 用于传递与y 等 节点交互的消息。 发送消息发送消息 接收消息接收消息 图2 3 节点间消息传递图 下面设立当前三个节点的相关系数: x 节点,上级节点y : x 节点,上级节点z 和下级节点x ; z 节点,下级节点y 。 t o n g l i n k q 就是国内东方通科技公司开发的一种多级节点结构的消息中间件产 品。计算机在使用t o n g l i n k q 后能够组成支持的网络结构可以是总线型等。这样一来 便简化了实际网络复杂的拓扑结构。 2 3 3 消息队列技术 消息队列技术是消息中间件中最常见的一种异步通信机制。如图2 4 与图2 5 所示 为消息队列通信与传统通信的比较。在图2 5 中可以看出,程序a 既能将消息放入队列 管理器,也能从消息队列管理器中读取到消息,队列管理器负责管理各个应用程序生成 1 2 的队列。应用程序只管向相应队列中写入或读取消息即可,而不必关注消息发送方的具 体位置等。 程序a程序b 千 队列管理器 00 程序c 程序d 图2 4 程序间的传统通信图2 5 使用消息队列通信 消息中间件内部可保存有多个各种类型的消息队列,对消息根据其目的地进 行路由,在网络中多个节点的队列中存储转发,如果节点之间的链路失败,消息 将一直保留到链路恢复,或者等到操作员或程序重定向该消息。 i b mm q s e r i e s t 4 2 1 是i b m 公司的消息中间件产品,它给应用程序提供了一种基于 消息队列的通信机制。作为存储消息的数据结构,m q s e r i e s 队列利用队列管理器或 者是应用程序对队列实现放入或取出消息操作。队列与使用该队列的应用程序之间 并不存在联系。队列一般在主存储器、辅助存储器或者磁盘中存在,要么同时在其 中两个地方存在。一个队列不能同时存在于两个队列管理器中,队列管理器主要负 责所有队列的维护工作,并把新接收的消息置于合适的队列之中。 虽然消息队列对应用逻辑进行了简化,带来
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 22412:2025 EN Particle size analysis - Dynamic light scattering (DLS)
- 养老院院长聘用服务协议4篇
- 矿山承包劳务合同范本
- 房屋销售分销合同范本
- 小门市合伙合同范本
- 雇佣主播合同范本
- 房屋屋顶租用合同范本
- 乡镇路长制工作信息公开通报制度
- 客服工作心得体会(汇编10篇)
- 继续教育个人研修计划怎么写2025(5篇)
- ZDMS0.65S-A-YA型、ZDMS0.610S-A-YA型自动跟踪定位射流灭火系统现场控制箱使用说明书-佑安高科
- 无废校园知识培训课件
- 2025奇台县公安局招聘警务辅助人员(144人)考试参考题库附答案解析
- 中级政工考试题库及答案
- 助老员督导培训课件
- 医疗公司加盟管理办法
- 2025年浙江省中考道德与法治试题答案详解讲评(课件)
- 广州南沙深化面向世界的粤港澳全面合作白皮书(2022.06-2025.06)
- 2025年全国保密教育线上培训考试测试卷必考附答案详解
- 2025年陕西教师编制招聘考试笔试试题(含答案)
- 2025年高考英语新课标Ⅱ卷点评及2026备考方向 课件
评论
0/150
提交评论