消息中間件在數據交換中的應用研究及其面臨的挑戰
摘要:簡要介紹了消息中間件在數據交換中的應用,論述了消息中間所面臨的挑戰及應對措施:傳輸消息大小不受限制;同時支持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 消息中間件應用展望
隨著消息中間件應用的發展,消息中間件的應用前景會越來截止廣闊,將會脫離數據傳輸的范疇而成為一種新的應用模式;用消息驅動使異步更合理更優化;用消息隊列來實現負載均衡機制也是一個很好的理念;目前各種消息隊列服務系統都各自用自己的傳輸協議,將來的發展趨勢會有通用的傳輸協議。
評論
查看更多