消息中间件在数据交换中的应用研究及其面临的挑战
摘要:简要介绍了消息中间件在数据交换中的应用,论述了消息中间所面临的挑战及应对措施:传输消息大小不受限制;同时支持Windows 2000/nt/98/ME等多种操作系统,并能通过配置充分发挥不同操作系统的性能;实现消息队列操作的回滚与提交,使消息进行多级回执;以COM形式提供MQ Clinent API。
关键词:数据交换 消息中间件 消息队列 COM
计算机技术的不断推陈出新,带来了消息化发展的新浪潮,人们感受到了计算机及网络技术所带来的好处,于是对电子化、信息化应用的需求也越来越迫切。信息技术以其强大的渗透力,深入到社会经济生活的各个方面。在商业金融等领域,电子数据交换作为一种新的商务手段正在被广泛使用。
数据交换EDI(Electronic Data Interchange)是一种计算机应用技术,根据事先达成的协议,将信息按照一定的标准进行格式化处理,并把这些格式化的数据,通过计算机通信网络在其计算机系统之间进行交换和自动处理。作为计算机通信技术的一部分,EDI可以应用于制造业、运输业、零售业以及卫生保健和政府部门等各种经济部门之中。
消息队列中间件MOM(Message-Oriented Middleware)是一种特定的中间件,它利用高效可靠的消息传递机制进行平台无关的数据交换,并基于数据通信来进行分布式系统的集成。
1 数据交换的研究与应用现状
1.1 国际发展现状及趋势
西方发达国家已普遍采用EDI。据统计,1992年底世界上使用EDI的企业超过10万家,95年达到40万家。美国早在60年代初期,就在公路、铁路、海运和空运中应用EDI,而且每年还以100%的速度增长;西欧各国已将EDI应用于汽车、化工、电子、运输、保险、分销零售业中;日本已在销售、贸易、运输、和制造业中广泛使用EDI;新加坡声称95%的贸易用EDI实现。据悉,美国政府及欧洲共同体大部分国家的海关宣布,从1992年起,采用EDI方式输海关业务,如不采用EDI方式,其手续将被推迟办理,或不再选为贸易伙伴。
1996年,亚洲六个国家和地区(中国、日本、印度、马来西亚、菲律宾和中国***省)达成协议,将共同开发EDI系统,以便使这些国家和地区在进出口过程中能够实时采集进出口数据,有效对客户进行管理,减少报关错误。这无疑会加快亚洲国家的EDI建设进程。
在欧洲,一些大公司,包括超市连锁公司,已经开始对不开通EDI的供应商实行制裁措施(价格、处理时间、付款方式上实行岐视政策)。
新加坡贸易发展局宣布:从1999年1月1日起,所有进出口贸易都必须用EDI方式申报。
香港地区从2000年开始全面关闭进出口报关柜台,所有的进出口报关必须通过EDI方式。
EDI的发展趋势:
(1)应用EDI的行业会增多;
(2)EDI与其他信息传送技术和系统的一体化;
(3)EDI技术将受Internet的冲击。
1.2 国内发展现状
我国也早已经开始重视和普及EDI技术,“八五”抓基础、抓试点;“九五”建立起中国贸易网(China Trade Network),尽快实现与国际贸易网的大联通,全面推行EDI。
近几年来,国内方正、中软、启宏科技、南通等软件公司在数据交换平台方面都已经快速发展。
方正数码公司2002年提出了面向信息资源整合的跨地域、跨部门应用技术框架,为横跨多个政府机的服务、监管智能的业务实现和同一机构内多个部门不同业务系统之间的数据整合提供了进行有效转换和交流的安全信息交换平台——方正易畅InfoHub。
方正易畅InfoHub安全信息交换平台的信息系统中为终端节点提供安全可靠的消息传输。它采用基于XML技术的消息结构进行信息的表达,存储及传输。而作为封装在消息结构中的消息内容可以是XML格式的信息,EDI格式的信息,或者是采用用户自己定义的格式的信息。
由中软网络技术股份有限公司与河南省国家税务局联合开发出《行政管理与监控考核系统》填补了国家办公软件的空白。
中软股份在此基础之上建立系统框架,并通过技术框架与功能框架完美结合,使功能不断扩充与完善,完成了《行政管理与监控考核系统》。该系统已经在驻马店市国税局得到了全面的推广与实话,为提升税务行业行政管理水平和质量做出了贡献。
启宏科技电子数据交换平台,不仅为致力于提供数据交换与系统整合功能的软件开发商提供基础开发平台,同时也可直接运用于各种行业及政府公用基础数据交换平台的建设。
2 存在的问题及解决方案
目前EDI技术需要解决如下问题:
(1)网络通信传输标准:解决异型机、异型网络环境下的信息交换;
(2)交易业务格式标准化:交易双方必须使用相同的交易文件格式;
(3)语言文字标准化:交易双方应使用相互理解的语言文字进行交换;
(4)EDI中心的建立与管理规范;
(5)权威性与合法性;
(6)安全保密性。
随着EDI技术应用的深入,人们认识到:用户将不会再采用大而僵化的通用产品,他们将通过构件集成的方式实现个性化的IT方案。权威市场研究及顾问机构Gartner指出,到2005年,至少70%的新的应用软件将会以构件化的方式基于架构开发而成。
所有这一切决定了复杂而僵化的编码式的软件体系即将灵活的构件集成式的软件体系取代。而中间件(Middleware)技术则为构件化应用软件提供了一个实现资源共享的集成平台。
3 中间件技术
起步于二十世纪90年代初期的中间件,是一类软件的总称,实现网络互连、应用之间的互操作,与操作系统和数据库并称为三大基础软件。它位于操作系统和应用系统之间,是一种独立的系统软件或服务程序,应用软件借助该软件在不同平台、不同的应用环境之间实现资源共享。
中间件是位于平台(硬件和操作系统)和应用之间的通用服务。如图1所示,这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。
中间件所包括的范围十分广泛,针对不同的应用需求涌现出多种各具特色的中间件产品。基于目的和实现机制的不同,将平台分为以下主机几类:消息队列中间件、分布式面向对象中间件和事务处理中间件等。
消息队列服务是一种松耦合的分布式应用集成形式。发送者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,在合适的时候再将消息转发给接收者。这种模式下,发送和接收是异步的,发送者无需等待;二者的生命周期未必相同;发送消息的时候接收者不一定运行,接收消息的时候发送者也不一定运行;一对多通信:对于一个消息可以有多个接收者。
消息队列中间件最重要的功能是及时提供可靠的消息通信手段。为了能够完成消息的可靠传输,一般情况下,使用队列的方式进行消息管理,也就是说,能常在进行数据传输时,将数据按照用户定义的大小,拆分成若干消息放入消息队列,按照同步或异步的通信方式发送或者接收消息。
在当前消息系统工程中,出于功能、安全性、可靠性等方面的考虑,大量使用路由器、交换机、防火墙的网络设备,或使用集群、双机热备份等网络技术,网络结构日趋复杂。为了能够满足网络使用的要求,中间件产品通常可以采用多种方式进行部署,做到系统之间构筑一对一、一对多、多对一、多对多的树型网络结构,使系统配置和管理大为简化,同时也能满足系统数据传输的要求。
消息传输中间件的跨平台能力也是中间件的重要指标。为满足异构平台的数据通信要求,消息传输均使用标准的IP包封装,因此中间件产品能做到真正跨平台的数据通信。此外,消息传输中间件通常都提供丰富的API函数接口,可以支持标准C/C++、Microsoft Visual C++、Microsoft Visual Basic、Borland C、PowerZBuilder、Java等开发语言,特别是对标准的C/C++和Java的支持,方便在不同应用平台的应用开发,同时实际上也增强了消息传输中间件的跨平台能力。
消息队列服务系统即是把消息中间件技术应用于实践中一种位于平台(硬件和操作系统)和应用之间的服务程序。
消息队列是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一位置。其实现原理是:消息的发送者把自己想要发送的信息放入一个容器中(Message),然后把它保存至一个系统公用空间的消息队列(Message Queue)中;本地或者是异地的消息接收程序再从该队列中取出发给它的消息进行处理。
在消息传递机制中,有两个重要的概念。一个是消息,一个是队列。消息是由通信的双方所需要传递的信息,它可以是各式各样的媒体,如文本、声音、图象等等。消息最终的理解方式,为消息传递的双方事先商定,这样做的好处是,一是相当于对数据进行了简单的加密,二则采用自己定义的格式可以节省通信的传递量。消息可以含有发送和接收者的标识,这样只有指不定期的用户才能看到只传递给他的信息和返回是否操作成功的回执。消息也可以含有时间戳,以便于接收方对某些与时间相关的应用进行处理。消息还可以含有到期时间,它表明如果在指定时间内消息还未到达则作废,这主要应用与时间性关联较为紧密的应用。
消息队列是发送和接收消息的公用存储空间,可以存在于内存中或者是物理文件中。消息可以以两种方式发送,即快递方式(express)和可恢复模式(recoverable),它们的区别在于,快递方式为了消息的快速传递,把消息放置内存中,而不放于物理磁盘上,以获取较高的处理能力;可恢复模式在传送过程的每一步骤中,都把消息写入物理磁盘中,以得到较好的故障恢复能力。消息队列可以放置在发送方、接收方所在的机器上,也可以单独放置在另外一台机器上。正是由于消息队列在放置方式上的灵活性,形成了消息传送机制的可靠性。当保存消息队列的机器发生故障而重新启动以后,以可恢复模式发送的消息可以恢复到故障发生之前的状态,而以快递方式发送的消息则丢失。另一方面,采用消息传递机制,发送方必须再担心接收方是否启动、是否发生故障等非必要因素,只要消息成功发送出去,就可认为处理完成,而实际上对方可能甚至未曾开机,或者实际完成时可能已经是第二天了。
采用消息队列技术带来的好处是:由于是异步通信,无论是发送方还是接收方都不用等待对方返回成功消息,就可以执行余下的代码,因而大大地提高了事物处理的能力;当信息传送过程中,信息发送机制具有一定功能的故障恢复能力;消息传递机制使得消息通信的双方具有不同的物理平台成为可能。
消息队列分为用户创建队列和系统队列,用户队列分为:
(1)“公共队列”在整个可传送消息的“消息队列”网络中复制并传输,并且有可能由网络连接的所有站点访问。
(2)“专用队列”不在整个网络中发布。相反,它们仅在所驻留的本地计算机上可用。专用队列只能由知道队列的完整路径名或标签的应用程序访问。
(3)“管理队列”包含确认在给定“消息队列”网络中发送的消息回执的消息。指定希望MessageQueue组件使用的管理队列。
(4)“响应队列”包含目标应用程序接收到消息时返回给发送应用程序的响应消息。指定希望MessageQueue组件使用的响应队列。
系统队列分为:
(1)“日记队列”可选地存储发送消息的副本和从队列中移除的消息副本。
(2)“死信队列”存储无法传送或已过期的消息的副本。
(3)“专用系统队列”是一系列存储系统执行消息处理操作所需的管理和通知消息的专用队列。
消息队列和电子邮件着很多相似处,他们都包含多个属性,用于保存消息,消息类型中都指出发送者和接收者的地址;然而他们的用处却有着很大的区别:消息队列的发送者和接收者是应用程序,而电子邮件的发送者和接收者通常是人。
图2是消息队列应用程序的体系结构。
典型的MOM系统有:IBM的MQSeries、Microsoft的MSMQ等。
微软消息中间件MSMQ可以在应用之间实现推送式的商务传输环境,即使在可靠性不高的网络上也能建立可靠的应用。它具有易用、应用高度集成的特点。
由于完全支持COM、动态目标服务构架以主内置集中式系统管理,MSMQ成为windows 2000 server上最容易使用、总署和管理的消息队列产品。它提供全面的消息队列功能,比如可靠而有强性的消息传送、基于开销的消息路由以及对事务处理的完全支持。MSMQ通过微软的MSMQ-MQ series桥来提供与Mqseries紧密的互操作性,同样通过leve18系统的产品提供与其它消息队列产品的连接。
但它存在的不足是:它要求NT4.0以上,MQ1.0是基于SQL,其性能低而不稳定。WINDOWS2000版本以后,开始实用,但也只能开发出县级以下开发系统,开发系统级别收到了一定的限制。
IBM的MQSeries中间件产品,以消息队列的方式为分布式环境下实现程序之间的通信提供了灵活、快速并且易于使用的解决方案。这种消息交换与硬件、操作系统无关,并能够保证数据既不会丢失又不会被复制。
MQSeries提供了一系列功能,对系统进行集成以提供快速、可靠和一致的系统内信息访问能力。MQSeries以消息处理和消息排队的通信模式提供应用到应用的边连接。基于通信中间件MQSeries开发七号信令监测系统,能够保证信息联通的可靠性和安全性,同时也缩短了开发时间 ,为企业赢得市场。
IBM的Mqserices系列市场占有率高,性能稳定,但该开发系统价格昂贵,在我国一般公司、企业等单位的使用就受到一定的限制。
CNT(CSS Network Technology)MQ Service是中软网络技术股份公司开发的一种分布式消息队列服务系统,是一个架构于Windows系统平台的消息队列服务系统,较好地解决了目前消息队列服务系统存在的缺陷和不足。
4 消息中间件所面临的挑战
消息队列服务系统中,消息传输的可靠性与消息的大小受到一定的制约,目前,微软和IBM的消息中间件产品对消息的大小和容量都有一定的限制,消息中间件在以后的开发中,将会向传输的消息大小和容量不受限制的方向发展。可以使用拆分和组装技术,实现整个系统对所传输的消息大小和容量不受限制。
为了消息传输的可靠性能足够高,消息中间件将会使用消息多级回执技术,使消息可以回滚和可以反悔,当消息从队列中被提取的同时其暂存缓存区中,此时即使断电,也可以保证消息的可靠传输而不被延迟和丢失。
消息队列服务系统处理高并发服务是又一技术难点,服务器由原来处理5个并发任务到16并发任务,再到2000并发任务一直在不断的改进。使用异步I/O机制,处理好进程与线程的正确关系是消息队列服务系统又一技术关键所在。
以以COM形式提供MQ Client API是目前消息队列服务系统的需求。API面对过程函数的组件接口在使用过程中会带来一定的麻烦,使用COM面向对象的组件接口比使用API组件接口有很大的好处。可以减少定义函数、附加附件、制定优先级等一系列繁琐的过程。
5 消息中间件应用展望
随着消息中间件应用的发展,消息中间件的应用前景会越来截止广阔,将会脱离数据传输的范畴而成为一种新的应用模式;用消息驱动使异步更合理更优化;用消息队列来实现负载均衡机制也是一个很好的理念;目前各种消息队列服务系统都各自用自己的传输协议,将来的发展趋势会有通用的传输协议。
评论
查看更多