(计算机系统结构专业论文)消息中间件tonglinkq及其消息路由算法设计与实现.pdf_第1页
(计算机系统结构专业论文)消息中间件tonglinkq及其消息路由算法设计与实现.pdf_第2页
(计算机系统结构专业论文)消息中间件tonglinkq及其消息路由算法设计与实现.pdf_第3页
(计算机系统结构专业论文)消息中间件tonglinkq及其消息路由算法设计与实现.pdf_第4页
(计算机系统结构专业论文)消息中间件tonglinkq及其消息路由算法设计与实现.pdf_第5页
已阅读5页,还剩51页未读 继续免费阅读

(计算机系统结构专业论文)消息中间件tonglinkq及其消息路由算法设计与实现.pdf.pdf 免费下载

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

文档简介

消息中间件t o n g l i n k q 及其消息路由算法设计与实现 论文摘要 学科专业:计算机系统结构 论文题目:消息中间件t o n g l i n k q 及其消息路由算法设计与实现 硕士生: 缪世明,9 9 s 6 - 4 4导师:王忠仁教授 中间件是多层客户机服务器模型发展的产物;随着i n t e r a c t 的发展日 益广泛和许多企业需要更多更大的基于客户机服务器模型的分布式应用, 中间件势必将成为这些应用最具竞争力的解决方案。按中间件的目的和实 现机制的不同可将中间件分为许多不同的种类,大致分为远过程调用中间 件、面向消息中间件( m o m ) 、交易中间件和对象请求代理中间件等本 论文在北京东方通科技公司消息中间件产品t o n g l i n k q 的基础上,将针 对面向消息中间件进行讨论,其重点将放在消息中间件的一个重要功能消 息路由进行分析。 本论文首先对中间件概念及其分类作了一个简要的介绍,然后本论文 详细介绍了消息中间件及其一个产品t o n g l i n k q ,随后分析了网络路由 的原理机制、t o n g l i n k q 的堂垦堕史蔓速i t l r a 的协议及其实现。 【关键词】中间戚消息、客户机朋艮务彩分布式系蔬、路由 一 塑蔓 a b s t r a c t s p e c i a l i t y : c o m p u t e rs y s t e mo r g a n i z a t i o n a r c h i t e c t u r e t i t l e :m e s s a g i n g m i d d l e w a r e t o n g l i n k q a n dt h ed e s i g n i n g a n d i m p l e m e n t i n go fr o u t i n go fm e s s a g e d e g r e ea p p l i c a n t :m i a o ,s h i m i n g ; 9 9 s 6 - 4 4 d e g r e e a d v i s o r : w a n g ,z h o n g r e n ,p r o f e s s o r m i d d l e w a r ei sa p r o d u c t o r f o rt h e d e v e l o p m e n t o ft h e m u l t i l a y e r c l i e n t s e r v e rm o d e l w i t ht h ea b r o a du s eo f t h ei n t e m e ta n dt h e g r o w i n g d e m a n d f o rm o r ea n d l a r g e r s c a l e dd i s t r i b u t e d a p p l i c a t i o n s b a s e do n m u l t i p l a y e r c l i e n t s e r v e r ,m i d d l e w a r em u s tb e t h em o s tc o m p e t i t i v ea p p r o a c ht oi m p l e m e n t t h o s e a p p l i c a t i o n s a c c o r d i n g t h ea i m sa n d i m p l e m e n t i n g m e c h a n i s m s , m i d d l e w a r e sc o u l db e c a t e g o r i z e da p p r o x i m a t e l y i n t od i v e r s ec l a s s e s : r p c b a s e dm i d d l e w a r e ,m e s s a g i n g o r i e n t e dm i d d l e w a r e ,d e a l i n g - o r i e n t e d m i d d l e w a r ea n do b j e c tr e q u e s tb r o k e rm i d d l e w a r e ,e t c t h i st h e s i s ,b a s e do n t h em o m p r o d u c to fb e r i n gt o n g t e c h ,c o l t d ,c a l l e dt o n g l i n k q ,w i l lg i v e ad i s c u s so fm o ma n di tw i l lf o c u so no n ei m p o r t a n tf u n c t i o no fm o m : m e s s a g er o u t i n g f i r s t ,t h ec o n c e p to fm i d d l e w a r ea n d t h ec l a s s i f i c a t i o no fm i d d l e w a r ew i l l b ei n t r o d u c e di nt h et h e s i s ,t h e nt h ed e t a l l e so fm o m a n dt o n g l i n k q t h e m e c h a n i s mo fn e t w o r k r o u t i n ga n d t h em i d d l w a r e r o u t i n g i sa ni m p o r t a n t c o n t e n td i s c u s s e di nt h et h e s i s t h et h e s i se n d sw i t ht h ed i s c u s s i o no nt h e d e s i g n i n g a n di m p l e m e n t i n go fm e s s a g er o u t i n go ft o n g l i n k q k e y w o r d s :m i d d l e w a r e ,m e s s a g e ,r o u t i n g ,c l i e n t s e r v e r , d i s l a i b u t e ds y s t e m i l 堂星! ! 里壁墅呈兰型塑墨基堂皇堕虫竺鎏塑! 量塞望 第一章绪论 随着i n t e m e t 的日益发展,计算机在社会各方面的应用愈来愈广泛。一 个实际的业务往往是分离的,因而分布式应用的使用非常广泛。在一个分 布式系统中t 各个计算机系统通常都是通过网络连接起来的,它们之间存 在着巨大的差异,使用的标准各异,资源、数据极为庞大,为了使通过网 络连接起来的计算机发挥出更好的性能,安全性、可靠性得到进一步提高, 基于分布式系统的研究开发显得非常重要了。 客户机lj j 日务器模式是分布式系统的主流应用模型。传统的两层 c l i e n t s e r v e r 模型在小规模的应用中发挥了很好的作用。但随着应用规模的 逐渐扩大,传统的c l i e n t s e r v e r 模型已不能够很好的解决应用所提出的问 题。因而,三层、多层c s 结构应运而生,它们都是以中间件技术为基础 的。 中间件技术的发展非常迅速,其产品有m m 公司、b e a 公司、以及国 内北京东方通公司的系列中间件产品。中间件在金融、电信等企业的大规 模分布式应用中起到了非常关键的作用。 本文通过对北京东方通公司的消息中间件产品t o n g l i n k q 的研究, 将试图对中间件中的一类中间件:面向消息中间件( m e s s a g e o r i e n t e d m i d d l e w m - e ,m o m ) ,进行讨论。在此基础上,重点分析了消息中间件的一 个重要的消息传输功能:路由技术原理、实现。一般的路由技术只是用于 口层,而消息中间件的路由技术是建立在自己的网络体系结构上的点到点 的路由,在i s o 七层结构中,其应是位于会话层的端到端的路由技术。 本文分为五章。第一章为绪论,对全文作一概要简述;第二章介绍了 中间件产品发展、概念、分类及其作用;第三章介绍了消息中间件并结合 东方通公司的消息中间件产品t o n g l i n k q 对消息中间件进行分析。第四 章重点讨论了一般的路由机制和t o n g l i n k q 的路由原理及实现。第五章 对本文进行总结并提出了对中间件产品发展的一些看法。 塑息中间件t o n g l i n f u q 及其消息路由算法设计与实现 第二章中间件技术 本章将对中间件技术的产生的背景,中间件的分类及其在应用当中所 起的作用的作一细致的论述。 2 1 中间件技术产生的技术背景 2 1 1 应用模型的发展 任何一个应用,从p c 机上的报表程序到大型机上的计算,都由三个 部分组成:用户界面部分( 表示层p r e s e n t a t i o n ) ,应用逻辑部分( 应用逻 辑层b u s i n e s sl o g i c ) 和数据访问部分( 数据访问层d a t aa c e s s ) 。表示层 的功能是与用户交互,应用逻辑层进行具体的运算和决定程序的流程等, 数据访问层维护和更新应用程序的数据。尽管任何一个应用都由这样的三 个部分组成,但不同的应用开发人员出于诸如开发费用、扩展性及组件的 重用性等各种因素的考虑而采取不同的组合方式。 最初的计算机应用是一种基于主机终端模式的计算模型,应用中几 乎所有的计算都由主机来完成,终端只是作为一种输出设备。随着计算机 应用的日益扩大,这种体系结构存在的问题与不足愈来愈显现出来。人们 提出了客户机服务器( c l i e n t s e r v e r ) 结构,它的实质就是将数据访问 部分( 数据访问层) 和应用程序( 表示层和应用逻辑层) 分离开来,由数 据服务器执行数据操作,客户机来执行应用程序。用户在客户端通过网络 同服务器打交道,客户端又包括用户界面和企业逻辑,网络上传送的数据 主要是客户端向服务器发出的请求以及服务器发送给客户端的响应结果和 出错信息。 服务器是指在网络上可提供服务的任何程序,客户机是个向服务器 发出请求并等待响应的程序。网络采用客户机,服务器模式进行通信。一个 服务器应用进程被动地等待请求,一个客户机应用进程主动地发起通信。 一个服务器应用进程必须在远方的客户机进程尝试进行通信之前与协议软 件进行交互,通知本地协议软件它所等待的信息的特定类型,然后就等待 信息的到来。当到来的信息与应用进程详细说明的信息类型完全匹配时t 协议软件将这个信息移交给应用进程。一个客户机或一个服务器应用进程 为了建立通信,需与一个运输层协议直接交互,然后运输协议利用底层侪 2 第二章中间件技术 议发送和接受单个的信息。ns t k ,运行客户机或服务器的计算机需要安装 一套完整的协议堆栈。 c l i e n t s e r v e r 可以显著地减少局域网传输量、降低对数据控制的难度, 大大提高系统的联机事务能力,增强系统的开放性和可扩充陛、安全性, 充分利用各种资源,提供了多用户开发特性,保障了用户投资。 但是,在多用户、多数据库、且非安全的网络环境下( 例如i n t e r n e t ) , 两层客户机,月匣务器的应用就有明显的局限性,原因如下: 服务器端的数据库必须同每一个活动的客户保持连接,这些连接消耗 了大量的运算资源,其结果是随着客户数目的增加,性能不断下降。多用 户、多数据库的连接存在死锁和系统崩溃的潜在可能。在i n t e r n e t 这样的大 规模分布式环境下锁住一项数据以防止其它用户访问将造成其它用户长时 间的等待。 两层模式下的安全管理不适合于非局域网环境。由于事务处理逻辑驻 留在客户端,所以在这种基于用户授权方式的安全管理下,一旦用户拥有 了某项权限就可以为所欲为,即可以绕过客户端的应用逻辑直接操作数据。 引起资源浪费,首先,两层应用的代码难以得到重用,因为这种应用 ( 用户界面和程序逻辑在一起) 和具体的数据紧密联系在一起,重用只能 以c o p y p a s t e 源代码的形式而不是二进制组件的形式来实现。其次,由于 应用逻辑全部驻留在客户端因而当应用环境发生变化需要改变事务逻辑 时,每个客户机上的程序都需要更新,给系统的维护和管理造成了一定的 困难。随着应用系统越来越复杂,客户端应用程序变得越来越庞大,对客 户机的处理能力要求越来越高,成为所谓的”胖客户机”。 由于上述原因,虽然客户机服务器已经流行多年,但有人预测传统的 客户机月最务器结构有可能过时,代之于w e b 技术、对象技术、数据仓库技 术等新的概念和结构。 但到目前为止,客户机i n 务器还在发展。为了克服两层客户机服务 器模型的缺陷,人们发展出了三层或多层客户机服务器模型。客户机i n 务器方式的应用还在迅猛扩张。 三层或多层客户机服务器模型,程序逻辑与用户界面分开,表示层 ( p r e s e n t a t i o n ) 、应用逻辑层( b u s i n e s sl o g i c ) 、数据服务层 ( d a t a s e r v i c e ) 被分割成三个相对独立的单元。表示层负责与用户交互并 把相应的请求通过调用中问层的组件传递给应用逻辑层。应用层的组件执 一塑皇生塑堡! 竺! 兰坠型里垦苎堂皇堕由簦鲨堡生量塞望 行具体的事务逻辑并通过s q l 等方式向第三层的组件提出数据或其它资源 请求。因而使分布式应用在“瘦客户机上运行。三层模型结构如下: 图2 一l 在三层或多层客户机,服务器模型中,我们可以把各种业务规则都封装 在各自相应的构件中,这样业务规则的实现和客户使用的用户界面的实现 就相分离了( 在传统的两层客户机,服务器模型中,两者是同时在客户机应 用程序中实现的) ,当一方要进行改变时,只对需改变的一方进行改变。 与此同时,在同一层上的构件之间也可以相互调用,这样也增加了代码的 可重用性减少了编程量,而且因为构件也是相互独立的,所以当需求改 变时也只需对相应的构件进行改变。如此一来就大大减少了系统维护的负 担,并提高了系统的适用性。这些位于应用逻辑层的构件就是现在广泛使 用在分布式应用的多层客户机朋艮务器模型中的中间件( m i d d l e w a r e ) 。 2 1 2 中间件产生的原因 如上节所述,中间件是应用发展的产物。随着对各种旧有应用的不断 扩充和新应用的不断增加,i n t e r n e t 在社会生活各个领域的使用日益广泛, 各企业i t 部门面临的问题也越来越多。由于历史原因,各个硬件、软件厂 商的产品使用了不一致的标准,导致了不同硬软件平台。不同的硬件平台、 网络环境、数据库之间的互操作,多种应用模式并存,使得系统效率过低、 传输不可靠、数据加密不安全、应用开发周期过长、可重用性差,等等。 这些问题如果单纯依赖传统的系统软件或工具软件提供的功能已经不能很 好地满足要求。诸如此类的问题使人们开始关注中间件,就象j a v a 产生的 最初起因是人们不满足于为各种不同的环境重复开发功能相同的程序。伴 随着分布式应用的迅猛发展,多层客户机服务器已经成为开发分布式应用 的实际标准,中间件( m i d d l e w a r e ) 这一新兴的软件领域巳悄然崛起。 4 塑三童主塑壁垫查 2 2 中间件的概念及分类 2 2 1 中间件的概念 既然许多问题是由各种不同的厂商的产品并存所引起的,又不能靠传 统的系统软件( 如操作系统、数据库等) 来解决,一类处于应用软件和系 统软件之间的软件便应运而生,这类软件就是中间件。中间件或者是独立 于硬件或数据库厂商( 处于其产品的中间,实现其互连) 的一类软件,或 者是客户方与服务方之间的连接件,或者是需要进行二次开发的中间产品。 总之,中间件是在中间。中间件正处在迅速发展之中,一个比较流行的定 义是:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这 种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统 之上,管理计算资源和网络通讯。从中间件的定义可以看出,中间件是一 类软件,而非一种软件。中间件的功能是多样的。它不仅仅实现互连,还 要实现应用之间的互操作;中间件是基于分布式处理的软件,其最重要的 功能是网络通讯功能。中间件是一种应用级的软件,是种应用集成的关 键构件,个好的中间件产品首先要能解决应用互连和互操作所带来的各 种问题,如支持各种通讯协议、各种通讯服务模式、传输各种数据内容、 数据格式翻译、流量控制、数据加密、数据压缩等;其次,中间件核心还 要解决名字服务、安全控制、并发控制、可靠性保证、效率保证等;再次, 应用开发要能提供基于不同平台的丰富的开发接口、支持流行的开发工具、 支持流行的异构互连接口标准( 如x a 、i d l 等) ,中间件要支持应用开发中 各种不同的平台,为系统的易用易管理提供保证。最后,针对不同的应用 领域,对中间件又有各种不同的要求。当然,由于实际的应用环境千差万 别,不能指望有一种包罗万象的中间件解决所有的问题。 从概念上讲,很早就已经有了中间件的雏形,在主机环境下的t p m o n i t o r 就是一种中间件。但是,只有客户机服务器以及“瘦客户机”的 概念提出之后,中间件的概念才被人们广泛地关注。在客户机服务器环境 下,一般将中间件放在位于客户机和服务器之间的中间层,负责应用逻辑 的处理,从而使客户端变得精干。与此同时,中间件还可以放在客户机和 服务器之间的多层应用服务器中。中间件已经成为了联结分布式计算环境 中各个相对独立的系统的胶合剂。中间件在分布式应用系统中所处的位置 如下图所示。 塑:垦! 囹壁墅! ! ! 型堕里垦基塑:垦堕鱼蔓鲨堡盐量塞堡 综上所述,中间件( m i d d l e w a r e ) 是在前端客户机和后端服务器之间为两 者都提供服务的一个中间层软件。其位于操作系统与应用程序之间,是平 台与通信的结合体。它一般包含应用逻辑,负责接收客户端的应用请求, 对请求做出响应处理后将请求交给后端服务器,并负责将服务器的处理结 果返回给客户端。 2 2 2 中间件的分类 从中间件的概念可以知道,中间件不是一种软件,而是属于一个类别 的多种软件的集合。各类中间件的实现一般是基于使用中间件的应用的会 话类型。应用的会话类型有两种:同步方式和异步方式。同步方式指客户 方向服务方发出请求后,等待服务方返回的结果,在收到服务方的处理结 果前不做其它处理。在这种方式下,客户方在等待服务方的处理结果时, 可以结合”超时”概念,在规定时限内,如果客户方还未收到服务方的处理结 果,则本次请求失败。同步方式可以保证在网络环境造成数据丢失的情况 下而重发数据,但这可能造成灾难。当客户方超时时间到而未收到服务方 的应答时,客户方本次请求失败,它会去重新发起请求。这会造成恶性循 环,大大降低网络上的处理效率。异步方式指客户方在等待服务方的处理 结果时可以去完成其它任务。在异步方式下,当一个节点向另外一个节点 发出消息后,不等待应答。因而一个消息发送完成后,发送方就可以去处 理其它事情,当应答到来时,再通知发送方进行处理。 从应用层次来看,中间件可以归纳为三种模式: 6 笙三垩塑堡垫查 消息传输模式将数据从不同的源发地采集到一起或转发,包括 数据标记、加密、队列和审核等; 事务协调模式支持应用事件及交易管理: 应用构件模式支持构件式应用,是网络化应用的发展趋势。 从应用类别来看,中间件可以分为三大类: 数据类( d a t ai n t e g r a t i o n ) :用于数据的存取、转换和增值,此类 中间件用于构建以数据为中心的应用。 处理类( p r o c e s si n t e g r a t i o n ) :把分布在网络结点上的各个应用或 处理连接在一起,形成一个统一的分布式应用。 分布式构件类( d i s t r i b u t e dc o m p o n e n t s ) :支持构件式应用,未来 应用的发展方向。 现在应用流行的中间件主要有远程过程调用中间件( r p c ) 、消息中间件 ( m e s s a g e o r i e n t e dm i d d l e w a r e ) 、交易中间件、对象中间件等几种。以下对 这几类中间件逐一作介绍。 远程过程调用中间件( r p c ) r p c 机制是早期开发分布式应用时经常 采用的一种同步式的请求应答协议。通过这种协议,程序员编写客户方的 应用,需要时可以调用位于远端服务器上的过程。r p c 扩展了过程语言中 的“功能调用结果返回”的机制,使得它可以适用于一个远程环境。当编译 一个采用r p c 机制的客户方应用时,编译器告之代表远程功能凋用的旬柄, 客户方需要调用远地的过程时,引用相应的功能调用的句柄,由r p c 机制 来负责客户方程序实时地调用到远地的过程。服务器上的过程返回后,客 户方的程序得到结果并继续往下进行。在采用r p c 机制时,调用远端的过 程只需去引用它,而不必告之网络地址或其它底层信息。r p c 的流程图如 下: j 盟量生盟堡卫型型望垦茎塑皇堕虫苎堕堡盐量壅堡 本地 过程 调用 i 一一曼皇苎曼一一ji 一里生曼塑晖一。 莱娆滑用 本地内坟 j 同络通信j 远程内泫 一一一一一一一一一j i 一一一一一一一一一 远程过程调用舌;c 程图 图2 3 图中所示的r p c 操作步骤如下: 1 调用客户端句柄;执行传送参数 2 调用本地系统内核发送网络消息 3 消息传送到远程主机 4 服务器句柄得到消息并取得参数 5 执行远程过程 6 执行的过程将结果返回服务器句柄 7 服务器旬柄返回结果,调用远程系统内核 8 消息传回本地主机 9 客户句柄由内核接收消息 l o 客户接收句柄返回的数据 由于r p c 机制是同步方式,当其用以构造客户机朋r 务器方式的应用 来进行工作时,要求客户方和服务方均能正常工作才能很好地运行,有一 方不能工作将导致r p c 失败。这在网络故障、机器故障存在的情况下,这 一要求是很难保证的。r p c 还有一个缺陷,不管客户方能做什么或做的多 快,它必须依靠服务方才能有效工作。另外,有些恢复机制可以在一个远 程调用阻塞时转而去调用另一个服务器上的过程,但这种路由方式也会影 星三垩生塑堡垫查 响效率。也有的r p c 机制采用异步方式,客户方非阻塞地调用远端的过程, 但这种方式不太标准而且很难采用。另外,由于大多数r p c 机制很难建立 点到点的关系,因而也很难用在面向对象的编程当中。 消息中间件( m e s s a g e - o r i e n t e dm i d d l e w a r e ) m o m由于历史原因, 在分布式应用中,r p c 机制使用比较广泛,但越来越多的分布式应用采用 消息中间件来构建,通过消息中间件来把基于不同的操作系统和不同的网 络环境的应用连接到一起。它为应用提供了一个完整的处理环境,允许开 发者及用户连接不同系统之间的数据和代码,或采用一致的界面进行应用 处理的互连。m o m 提供了一个高层应用接口,为不同系统提供操作核心。 m o m 产品的工作主要是通过将信息以消息的方式在程序间传递来完成。 基于消息的机制更多地适用于事件驱动的应用,当一个事件发生时, 消息中间件通知服务方应该进行何种操作。事件可以是一个请求,也可以 只是一种警示,警示到来后,即可进行某种处理,但不需等待应答。使用 消息中间件编程采用的是消息中间件的a p i ,可以很好地扩展到不同的操 作系统和硬件平台上。消息中间件的核心安装在需要进行消息传递的系统 上,在它们之间建立逻辑通道,由消息中间件实现消息发送。消息中间件 可以既支持同步方式,又支持异步方式,实际上它是一种点到点的机制, 因而可以很好地适用于面向对象的编程方式。中间件领域目前最热门的技 术是异步的消息中间件,异步中间件技术比同步中间件技术具有更强的容 错性,在系统故障时可以保证消息的正常传输。异步中间件技术可以分为 两类:广播方式和发布耵阅方式。广播方式把消息分发给系统的所有用户。 发行订阅方式可以指定哪种类型的用户可以接收哪种类型的消息。发布 订阅方式由于更加智能有效,事实上已成为异步中间件的非正式标准。 m o m 可以克服基于r p c 的中间件的限制,提供基于消息的异步通信 机制因此m o m a p i 调用不会阻塞应用程序,同时m o m 不会占用大量的 网络带宽,可以跟踪事务,通过将事务存储在磁盘上,可以恢复系统及网 络故障。 在下一章将详细讨论消息中间件并要分析它的一个产品t o n g l i n k q 。 交易中间件交易中间件是专门针对联机交易处理系统而设计的。联机 交易处理系统需要处理大量并发进程,处理并发涉及到操作系统、文件系 统、编程语言、数据通讯、数据库系统、系统管理、应用软件,是一个相 当艰巨的任务,但是工作的难度可以通过采用一个交易中间件来简化。交 9 一 堂皇囹生墅翌曼型型里墨基堂皇堕虫蔓鲨堡生皇壅堡 易中间件就是一组程序模块,用以大大减少开发一个联机交易处理系统所 需的编程量。x o p e n 组织专门定义了分布式交易处理的标准及参考模型, 把一个联机交易系统划分成资源管理( r m ) 、交易管理( t m ) 和应用( a p ) 三部分,定义了应用程序、交易管理器、多个资源管理器是如何协同工作 的。资源管理器是指数据库和文件系统,交易管理器可归人交易中间件。 交易中间件管理由应用声明和提交的交易,并通过两阶段提交协议等方式 保证分布式交易的完整性、控制并发、实现交易路由和均衡负载。交易中 间件理论上相对成熟,功能和性能界定清晰,但基本上适用于联机交易系 统,如银行业务系统、定票系统等。尽管交易信息也是消息,交易中间件 也是基于消息的传输,也可支持同步和异步方式,但与消息中间件的定位 差距较大,属于一种较专用的中间件。 对象中间件( 0 b j e c tr e q u e s tb r o k e r ) o r b 面向对象的技术一直是软 件界努力追求的目标,传统的对象技术通过封装、继承及多态提供了良好 的代码重用功能。但是这些对象只存在一个程序中,外面的世界并不知道 它们的存在,也无法访问它们。面向对象的中间件就是要解决这些问题, 它提供一个标准的构件框架,能使不同的厂家的软件通过不同的地址空间、 网络和操作系统互相交互访问。该构件的具体实现、位置及所依附的操作 系统对客户来说都是透明的。例如,我们可以通过简单的组装或扩展已有 的构件就可以建立一个客户机,服务器结构的信息系统。面向对象的中间件 技术的目标就是为软件用户及开发者提供一种应用级的即插即用的互操作 性,就象现在使用集成块和扩展板一样。o r b 的总体框架图如下图所示: a p p l i c a t i o n s d o m n ni n t e r f a c ec o m m o nf a c i l i t i e s 0 b i e c ts e r v i c e 图2 _ 4 1 0 箜三童! 塑生垫查 理想的要求是,一个o r b 应赋予每个对象( 与其它对象特别是远程的 对象进行通信时) 以下的分布透明性: 位置:无论其它对象是否处于同一个计算机中; 访问路径:与其它对象交换消息经过的途径; 重定位:其它对象从一台计算机移至另一台: 数据表示:其它对象相应的数据格式: 通信机制:使用何种进程间的通信机制和规程; 调用机制:其它对象的方法是如何执行的。例如:进程、线程和动 态链接库等的细节; 存储机制:其它对象任何可以或不可使用存储的情况: 机器类型:任何机器型号上的不同; 程序语言:其它对象是以何种语言实现的; 操作系统:任何操作系统上的不同; 安全机制:其它对象本身所具有的访问控制机制。 对以上各方面的任何变更都无须将这个特定对象重新编译,如同调用 动态链接库一样,对任何一个对象的实现动态地进行更改,都将不会影响 到其它的对象,无论它们是服务者还是请求者。 有关对象中间件的标准相继问世,o m g 组织的c o r b a 、m i c r o s o f t 的d c o m 是其中重要的两类标准,标识着对象中间件的发展方向。这些标 准都极大地促进了对象中间件技术的发展,随着面向对象的应用系统的逐 渐增长,对象中间件的需求也在逐年加大。对象技术的优势和对象中间件 的标准化,促使对象中间件的功能将最终涵盖其它几类中间件的功能而成 为中间件产品的主流。 除了以上几类中间件咀外,还有安全中间件、专用平台中间件、w e b 服务器中间件、网络中间件等在专门的领域中有着广泛的使用。这些中间 件的作用都是简化了应用,提高了应用效率。 消息中间件t o n g l i n k q 及其消息路由算法设计与实现 2 3 中间件在多层结构中解决的问题 中间件能够解决网络分布计算环境中多种异构数据资源的互联共享问 题,实现多种应用软件的协同工作,是网络分布式应用软件的网络“操作系 统”。利用中间件可大幅提高应用软件系统的开发效率,增强系统稳定性, 使系统便于维护管理,同时具有良好的伸缩性与可扩展性,充分保护用户 投资、降低系统投资风险。因此技术和应用的发展使中间件成为分布式应 用的关键性基础设施,可广泛适用于政府部门、银行、证券、保险、电力、 电信、交通与军事等关键性的网络分布应用。 中间件由于充分发挥系统调度系统的处理性能,因而比一味通过加大 机器配置来提高处理能力要更经济实用。中间件在多层客户机n 务器应用 系统中的作用集中表现在以下几个方面:高效率、高可靠、高可用。 2 3 1 中间件对效率的影响 从效率问题来看,中间件可以使通讯的效率和服务器并发访问和处理 的效率有很大提高,这两方面也是影响系统效率的关键因素。 在网络速率一定的条件下,中间件为何能提高通讯效率呢? 网络只是 一种基础设施,分布式应用通过网络交换信息,信息交换的方式不同,将 直接影响传输的处理效率。消息中间件和交易中间件,客户方和服务方的 信息交换是基于消息的方式,而数据库厂商提供的s q l 方式,由于大都基 于s q l 语句的传输,交互太多,效率就不如基于消息的方式。 中间件在传输机制的设计上,多采用诸如链接复用、滑动窗口、压缩、 传输优先级等技术手段,来充分利用网络带宽,保证传输效率。因此在目 前流行的三层结构的应用中,客户方和应用服务器之间是基于中间件连接 的。 中间件通过对系统资源的有效管理,最大限度地提高系统的并发处理 能力,从而提高整个系统的效率。中间件通常都实现了以下手段: 进程管理:通过对服务进程的管理,使得在正常情况下,能用尽量少 的服务进程处理尽量多的请求,减少进程的启动终止次数。在峰值情况下, 控制服务进程的总数,使得服务器在设定的负载下工作,不被压跨。总之, 通过中间件对服务进程的有效管理,可以使系统在额定的负荷下稳定工作, 当请求服务的数量超过了服务器的处理速度时,中间件会把请求排队进行 缓冲。 1 2 第二章中间件技术 保持和复用数据库连接:服务进程访问数据库都要和数据库建立连接, 如打开和关闭数据库等。中间件通过采用长驻服务进程的手段,使得与数 据库的连接被保持和复用,从而大大减少与数据库连接的次数和时间。 支持应用优先级:通过对应用优先级的支持,保证优先级高的应用能 尽快得到响应。 2 3 2 中间件对可靠性及可用性的影响 从高可靠性来看,影响交易一致性的因素很多,硬件的故障、网络的 故障、应用程序的故障、人为故障等,都将影响交易完整性。中间件就是 通过监控和管理系统中的每笔交易,通过一定的交易管理方法如两阶段 提交协议、核对冲正机制等,来保证交易的完整性,从而使系统的错帐率 达到用户可以忍受的程度。因此中间件是降低应用系统出错机率的有利工 具,这比直接在应用中解决错帐的问题或一味的提高硬件和网络质量的方 法更加直接有效。 从高可用性来看,很多应用系统必须保证7 2 4 小时不间断作业,中 间件从以下几方面对此提供保证: 动态配置:中间件可以支持动态配置,包括动态的配置占用系统的资 源、动态增减服务进程、动态增加新的服务、动态增减网络结点等等,实 现对系统的调整和扩充不停机进行。 均衡负载:中间件可以把请求分配到不同的服务器、不同的服务进程 上进行处理,保证每个服务器、每个服务进程的处理能力随时处于最佳状 态。 基于镜像的灾备方案:中间件支持通过镜像的方式,可以把关键数据 路由到异地的备份机上重复执行,并保证备份机和主机准同步运行且处理 结果一样,进而实现异地的灾难备份系统。这种方式无须特殊的硬件和高 速网络的支持,因而比基于硬件、数据库的灾备方式要便宜的多。 2 4 中间件的优缺点 中间件技术对企业分布式应用提供一个可行的解决方案。从纯粹的企 业应用来说,使用中间件将可以获得以下优点 缩短应用开发周期:在业务逻辑程序、应用逻辑程序仅占总程序量 的少部分,而基础程序却占了大部分的应用中,若是使用中间件系列产品 消息中间件t o n g l i n k q 及其消息路由算法设计与实现 来组合应用,则可大大缩短应用的开发周期,同时节约大量的人力和资金 投入。 减少项目开发风险:企业自己开发内置的基础软件是得不偿失的, 项目总的开支至少要翻一倍,甚至会十几倍,而且基础软件的可靠性与健 壮性都是需要通过长时间的试运行才能够得到保证,这将远远超过一个应 用项目的开发时问。如此,项目中途夭折、费用远远超过预算、无法准时 完成项目和偏离既定的目标等项目开发风险将增大。而借助标准的商业中 问件,企业可以很容易地在现有或遗留系统之上或之外增加新的功能模 块,并将它们与原有系统无缝集合。 应用系统质量及可维护性:基于企业自我建造的基础软件平台上的 应用系统,每增加一个新的模块,就要相应地在基础软件之上进行改进。 t h es t a n d i s hg r o u p 在调研过程中,曾在某个企业中的一个应用系统里,发 现了有多达1 万7 千多个模块接口,而标准的中间件在接口方面都是清晰 和规范的,可以有效地保证应用系统质量及减少新旧系统维护开支。同时, 由于使用中间件,企业应用系统的维护在很大程度上只是对自己企业业务 逻辑的维护,从而很大程度上增加了整个系统的可维护性。 此外,中间件技术对整个应用模型起到了重要的影响;中间件使应用 可以基于一个统一的运行平台,这个平台所提供的服务同操作系统和网络 服务程序相比更为强大;应用程序利用中间件平台提供的a p i ( a p p l i c a t i o n p r o g r a m m i n g i n t e r f a c e ) ,可以具有如下优点: 中间件提供的是一套统一的接口,应用程序通过调用其a p l 可以 在任何运行该中间件的平台上运行。 与运行平台提供的网络通讯服务无关。中间件负责解决不同网络侨 议之间的转换,应用程序不必关心下层网络协议可能出现的差异。 具有良好的可扩展性。应用可以在保持原有的功能上自由的、方便 的进行扩展。 尽管中间件具有上述优点,尽管它的目的是为应用程序提供一个“统 一”的运行平台,但中问件所提供的服务却并非是“万能的”。中间件同其 所期望实现的一些原则离实际还有很大距离,这包括: 由于中间件不存在一个统一的标准,各种流行的中间件产品使用专 有的a p i 和专有的协议,使得应用建立于单一厂家的产品,来自不同厂家 4 第二章中间件技术 的实现很难互操作。 应用开发者在这些中间件产品提供的服务之上建立自己的应用还 要承担相当大的风险,随着所使用中间件的技术的改变和发展他们往往还 需重写他们的系统。 此外,尽管中间件概念提高了分布计算的抽象化程度,但应用开发 者还需面临许多艰难的设计选择,例如,开发者还需决定分布应用在c l i e n t 方和s e r v e r 方的功能分配。通常将表示服务放在c l i e n t 以方便使用显示设 备,将数据服务放在s e r v e r 以靠近数据库。 但也并非总是如此,何况其它应用功能如何分配也是不容易确定 的。 然而同使用中间件而带来的巨大优势相比,使用中间件带来的这些不 足之处是可以接受的。 j 堂进旦壁里! g 型鉴塑墨基塑皇堕童蔓鎏堡盐量壅塑 第三章消息中间件及消息中间件产品t o n g l i n k q 本章对中间件技术当中的一个重要分枝消息中间件作一讨论。先 介绍消息中间件的概念,然后对北京东方通公司的消息中间件产品 t o n g l i n k q 进行介绍。 3 1 消息中间件( m e s s a g e o r i e n t e dm i d d l e w a r e ) m o m 消息中间件是中间件范畴中发展的最快的中间件类型之一,虽然它已 经在各个领域得到广泛的应用,但现在还不存在一个统一的消息中间件的 标准。这意味着,同d c e ( 分布式计算环境,采用r p c 通讯) 以及c o r b a 相比,不存在通用的一组规范来指导消息中间件的实现以及应该支持的接 口、功能等等。 同那些基于r p c 的中间件相比,消息中间件具有的另一个显著的特点 是消息中间件的通讯不是直接的,它通过使用间接的消息队列或信箱等进 行间接的通讯;这种异步通讯方式使得应用之间不必同步,更好的满足了 分布式应用处理的需要。在当前的分布式应用中,消息中间件使用越来越 广泛,许多任务关键( m i s s i o n c r i t i c a l ) 的应用都构建在这种消息中间件平 台( 如i b m 的m o s e r i e s 和b e a 的m e s s a g e q ) 之上。 基于消息的中间件m o m 提供了一个完整的处理环境,允许开发者及 用户连接不同系统之间的数据和代码,并实现采用一致的界面进行应用处 理的互连。m o m 提供了一个高层应用接口,为不同系统提供操作核心。 m o m 产品的工作主要是通过将信息以消息的方式在程序间传递来完成。 消息中间件m o m 现在应用比较广泛的有两种形式:消息代理( m e s s a g e b r o k e r ) 手h 消息队甜j ( m e s s a g eq u e u i n g ) 。由于目前大多数消息中间件产品( 包 括t o n g l i n k q ) 都是基于消息队列的,因此下面的讨论将把重点放在基于 消息队列的中间件上。 3 2 消息队列中间件( m e s s a g eq u e u i n gm i d d l e w a r e ) 基于消息队列的中间件产品有很多,包括如i b m 的m q s e r i e s 、b e a 的m e s s a g e q 以及北京东方通公司的t 0 n g l n 刚q 都是基于消息队列的消息 中间件。 笪三童堂旦中间件及消息中间件产品t o n g l i n k j q 3 2 1 消息、队列的概念 在消息中间件中,消息、队列是基础,以下将给出消息和队列的定义。 首先需要定义的是消息。消息是指由简单的位或字符组成的串,这些 位串和字符串仅仅对某一个或某一类应用程序有意义。一个消息由消息的 属性和消息的数据两部分组成,消息的属性包含了消息的控制信息。在所 有的消息系统中,消息被用来在同一个应用的不同进程或不同应用的不同 进程间进行数据传输与控制,这些应用程序可以在相同的平台或不同的平 台上运行。 然而对消息中间件系统而言,消息作为一种实体,必须有某一种方式 对其进行区分和操作;不象面向对象中间件可以使用一种界面定义语言 ( i d l ,i n t e r f a c ed e f i n i t i o nl a n g u a g e ) 来定义对象的属性和操作,消息中间 件无法对基于具体应用程序的消息采用这种方式进行描述;解决的办法是 使用消息头( 或控制头) ,消息头是由中间件系统自动对每个消息附加的并 只由中间件系统使用的一小块信息;所有的消息中间件都通过采用加入一 个消息头( 例如m m 的m q m d :m qm e s s a g ed e s c r i p t o r ) 的方式来对这些 消息进行管理。队列管理器将对半每一个进入消息队列的消息附加上这个 消息头,它可能包含诸如队列名称、优先级别、消息标示以及消息类型等 信息。 队列被作为一种有名实体( 例如,m m 将消息队列作为一种对象) , 队列独立于使用它们的应用程序而存在,它用于存放应用的消息,并能被 应用程序通过调用相应a p i 进行操作。消息队列可以是显示存在的( 此时 它能被应用编程人员通过程序进行访问) ,也可以是隐藏的( 无法通过应用 程序访问) 。此外队列可位于本地系统上,这种情况下它们被称为本地队 列:也可位于其它队列管理器上,这时则被称为远程队列,它可以具有不 同的属性以对特定的应用程序进行服务;也可以将消息队列作为一种通用 的、供所有应用程序使用的通讯渠道,这种消息队列的属性不由应用程序 控制的,从而对所有的应用而言它都是一样的。 使用消息队列,应用程序之间不再需要建立直接的专用的通讯通道; 它们之间的通讯都通过调用对消息队列进行访问的a p i 而实现。这样做的 好处在于,应用程序之间不再需要保持完全同步:通讯时,应用程序只需 将一个消息放入消息队列,而不必关心与之通讯的对方是否存在或是否准 备好处理这个消息,消息的处理则有队列管理器负责了c 队列管理器便是 消息中间件t o n g l i n i g q 及其消息路由算法设计与实现 消息中间件的一个组成部分,在下面将有介绍。 使用消息队列,存在消息中间件之间如何识别对方传送来的消息的问 题,即消息格式的规定。其实大多数的消息中间件产品并不关心应用程序 之间通讯时所采用的信息格式,它们仅仅将应用程序通过a p i 传来的这些 消息当作一种字节流;因此,消息中间件提供给应用的a p 要负责消息在 消息中间件( 主要在消息队列) 和应用程序间格式转换。因此,建立在消

温馨提示

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

最新文档

评论

0/150

提交评论