<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-128  評論-55  文章-5  trackbacks-0

     

    消息中間件原理及JMS簡介之一

     

    作者:orangelizq

    摘要:

           現(xiàn)今,越來越多的企業(yè)面臨著各種各樣的數(shù)據(jù)集成和系統(tǒng)整合,CORBADCOMRMIRPC中間件技術(shù)也應(yīng)運(yùn)而生,但由于采用RPC同步處理技術(shù),在性能、健壯性、可擴(kuò)展性上都存在著諸多缺點(diǎn)。而基于消息的異步處理模型采用非阻塞的調(diào)用特性,發(fā)送者將消息發(fā)送給消息服務(wù)器,消息服務(wù)器在合適的時(shí)候再將消息轉(zhuǎn)發(fā)給接收者;發(fā)送和接收是異步的,發(fā)送者無需等待,二者的生命周期也可以不必相同,而且發(fā)送者可以將消息間接傳給多個(gè)接收者,大大提高了程序的性能、可擴(kuò)展性及健壯性,這使得異步處理模型在分布式應(yīng)用上比起同步處理模型更具有吸引力。[5]

           本文首先介紹了消息中間件的原理,然后介紹了目前流行的消息中間件產(chǎn)品和一些開源實(shí)現(xiàn)。最后詳細(xì)分析了SUN及其伙伴公司提出的旨在統(tǒng)一各種消息中間件系統(tǒng)接口的規(guī)范(JMS)

    關(guān)鍵字:消息中間件,JMS,點(diǎn)對點(diǎn),發(fā)布/訂閱

    一、中間件簡介

    1.1 中間件的定義

    中間件(middleware)是基礎(chǔ)軟件的一大類,屬于可復(fù)用的軟件范疇。中間件在操作系統(tǒng)軟件,網(wǎng)絡(luò)和數(shù)據(jù)庫之上,應(yīng)用軟件之下,總的作用是為處于自己上層的應(yīng)用軟件提供運(yùn)行于開發(fā)的環(huán)境,幫助用戶靈活、高效的開發(fā)和集成復(fù)雜的應(yīng)用軟件。[1]

    IDC對中間件的定義為:中間件是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件借助這種軟件在不同的技術(shù)之間共享資源,中間件定位于客戶機(jī)服務(wù)器的操作系統(tǒng)之上,管理計(jì)算機(jī)資源和網(wǎng)絡(luò)通信。

    因而中間件是指一類軟件,是基于分布式處理的軟件,最突出的特點(diǎn)是其網(wǎng)絡(luò)通信功能。也可認(rèn)為中間件是位于平臺(tái)和應(yīng)用之間的通用服務(wù),這些服務(wù)具有標(biāo)準(zhǔn)的程序接口和協(xié)議。針對不同的操作系統(tǒng)和硬件平臺(tái),可以有符合接口和協(xié)議的多種實(shí)現(xiàn)。[1]

    1.1 中間件

     

    1.2 中間件的分類

    按照IDC的分類方法,中間件可分為六類:[1]

    1)        終端仿真/屏幕轉(zhuǎn)換

    2)        數(shù)據(jù)訪問中間件(UDA

    3)        遠(yuǎn)程過程調(diào)用中間件(RPC

    4)        消息中間件(MOM

    5)        交易中間件(TPM

    6)        對象中間件

        然而在實(shí)際應(yīng)用中,一般將中間件分為兩大類:一類是底層中間件,用于支撐單個(gè)應(yīng)用系統(tǒng)或解決一類問題,包括交易中間件、應(yīng)用服務(wù)器、消息中間件、數(shù)據(jù)訪問中間件等;另一類是高層中間件,更多的用于系統(tǒng)整合,包括企業(yè)應(yīng)用集成中間件、工作流中間件、門戶中間件等,他們通常會(huì)與多個(gè)應(yīng)用系統(tǒng)打交道,在系統(tǒng)中層次較高,并大多基于前一類的底層中間件運(yùn)行。

    1.2.1 終端仿真/屏幕轉(zhuǎn)換

    此類中間件用于實(shí)現(xiàn)客戶機(jī)圖形用戶接口與已有的字符接口方式的服務(wù)器應(yīng)用程序之間的互操作,應(yīng)用與早期的大型機(jī)系統(tǒng),現(xiàn)在已很少使用。

    1.2.2 數(shù)據(jù)訪問中間件

    此類中間件是為了建立數(shù)據(jù)應(yīng)用資源互操作的模式,對異構(gòu)環(huán)境下的數(shù)據(jù)庫或文件系統(tǒng)實(shí)現(xiàn)聯(lián)接。

    1.2.3 遠(yuǎn)程過程調(diào)用中間件

    此類中間件可以使開發(fā)人員在需要時(shí)調(diào)用位于遠(yuǎn)端服務(wù)器上的過程,屏蔽了在調(diào)用過程中的通信細(xì)節(jié)。一個(gè)應(yīng)用程序使用RPC來遠(yuǎn)程執(zhí)行一個(gè)位于不同地址空間里的過程,在效果上看和執(zhí)行本地調(diào)用相同。

    1.2.4 交易中間件

    此類中間件是專門針對聯(lián)機(jī)交易系統(tǒng)而設(shè)計(jì)的。聯(lián)機(jī)交易系統(tǒng)需要處理大量并發(fā)進(jìn)程,處理并發(fā)涉及到操作系統(tǒng),文件系統(tǒng),編程語言,數(shù)據(jù)通信,數(shù)據(jù)庫系統(tǒng),系統(tǒng)管理,應(yīng)用軟件等。而交易中間件根據(jù)分布式交易處理的標(biāo)準(zhǔn)及參考模型,對資源管理,交易管理和應(yīng)用進(jìn)行了實(shí)現(xiàn),從而使得基于交易中間件開發(fā)應(yīng)用程序更為簡單。交易中間件基本上只適用于聯(lián)機(jī)交易系統(tǒng),是一種較為專用的中間件。

    1.2.5 消息中間件

    此類中間件是指利用高效可靠的消息傳遞機(jī)制進(jìn)行平臺(tái)無關(guān)的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來進(jìn)行分布式系統(tǒng)的集成。通過提供消息傳遞和消息排隊(duì)模型,它可以在分布式環(huán)境下擴(kuò)展進(jìn)程間的通信。

    消息中間件可以即支持同步方式,又支持異步方式。異步中間件比同步中間件具有更強(qiáng)的容錯(cuò)性,在系統(tǒng)故障時(shí)可以保證消息的正常傳輸。異步中間件技術(shù)又分為兩類:廣播方式和發(fā)布/訂閱方式。由于發(fā)布/訂閱方式可以指定哪種類型的用戶可以接受哪種類型的消息,更加有針對性,事實(shí)上已成為異步中間件的非正式標(biāo)準(zhǔn)。目前主流的消息中間件產(chǎn)品有IBMMQSeriesBEAMessageQSunJMS[1]

    1.2.6 對象中間件

    傳統(tǒng)的對象技術(shù)通過封裝、繼承及多態(tài)提供了良好的代碼重用功能。但這些對象只存在與一個(gè)程序中,外界并不知道它們的存在,也無法訪問它們。對象中間件提供了一個(gè)標(biāo)準(zhǔn)的構(gòu)建框架,能使不同廠家的軟件通過不同的地址空間,網(wǎng)絡(luò)和操作系統(tǒng)實(shí)現(xiàn)交互訪問。對象中間件的目標(biāo)是為軟件用戶及開發(fā)者提供一種應(yīng)用級的即插即用的互操作性。目前主流的對象中間件有OMGCORBAMicrosoft COM以及IBMSOMSunRMI等。

     

    1.3 中間件的特點(diǎn)

    一般來講,中間件具有以下一些特點(diǎn):滿足大量應(yīng)用的需求,運(yùn)行于多種硬件和操作系統(tǒng)平臺(tái),支持分布式計(jì)算,支持標(biāo)準(zhǔn)接口和協(xié)議。開發(fā)人員通過調(diào)用中間件提供的大量API,實(shí)現(xiàn)異構(gòu)環(huán)境的通信,從而屏蔽異構(gòu)系統(tǒng)中復(fù)雜的操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議。

    由于標(biāo)準(zhǔn)接口對于可移植性和標(biāo)準(zhǔn)協(xié)議對于互操作性的重要性,中間件已成為許多標(biāo)準(zhǔn)化工作的主要部分。分布式應(yīng)用軟件借助中間件可以在不同的技術(shù)之間共享資源。

    總的來說,中間件屏蔽了底層操作系統(tǒng)的復(fù)雜性,使程序開發(fā)人員面對一個(gè)簡單而統(tǒng)一的開發(fā)環(huán)境,減少了程序設(shè)計(jì)的復(fù)雜性,將注意力集中與自己的業(yè)務(wù)上,不必再為程序在不同軟件系統(tǒng)上的移植而重復(fù)工作,從而大大減少了技術(shù)上的負(fù)擔(dān)。

     

    二、消息中間件原理

           面向消息的中間件(MOM),提供了以松散耦合的靈活方式集成應(yīng)用程序的一種機(jī)制。它們提供了基于存儲(chǔ)和轉(zhuǎn)發(fā)的應(yīng)用程序之間的異步數(shù)據(jù)發(fā)送,即應(yīng)用程序彼此不直接通信,而是與作為中介的MOM通信。MOM提供了有保證的消息發(fā)送(至少是在盡可能地做到這一點(diǎn)),應(yīng)用程序開發(fā)人員無需了解遠(yuǎn)程過程調(diào)用(PRC)和網(wǎng)絡(luò)/通信協(xié)議的細(xì)節(jié)。

    2.1 消息中間件簡介

           消息中間件利用高效可靠的消息傳遞機(jī)制進(jìn)行平臺(tái)無關(guān)的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來進(jìn)行分布式系統(tǒng)的集成。通過提供消息傳遞和消息排隊(duì)模型,它可以在分布式環(huán)境下擴(kuò)展進(jìn)程間的通信。

           消息中間件適用于需要可靠的數(shù)據(jù)傳送的分布式環(huán)境。采用消息中間件機(jī)制的系統(tǒng)中,不同的對象之間通過傳遞消息來激活對方的事件,完成相應(yīng)的操作。發(fā)送者將消息發(fā)送給消息服務(wù)器,消息服務(wù)器將消息存放在若干隊(duì)列中,在合適的時(shí)候再將消息轉(zhuǎn)發(fā)給接收者。消息中間件能在不同平臺(tái)之間通信,它常被用來屏蔽掉各種平臺(tái)及協(xié)議之間的特性,實(shí)現(xiàn)應(yīng)用程序之間的協(xié)同,其優(yōu)點(diǎn)在于能夠在客戶和服務(wù)器之間提供同步和異步的連接,并且在任何時(shí)刻都可以將消息進(jìn)行傳送或者存儲(chǔ)轉(zhuǎn)發(fā),這也是它比遠(yuǎn)程過程調(diào)用更進(jìn)一步的原因。

           如下圖所示,應(yīng)用程序A與應(yīng)用程序B通過使用 MOM 的應(yīng)用程序編程接口(API)發(fā)送消息進(jìn)行通信。

       MOM將消息路由給應(yīng)用程B,這樣消息就可以存在于完全不同的計(jì)算機(jī)上,MOM 負(fù)責(zé)處理網(wǎng)絡(luò)通信。如果網(wǎng)絡(luò)連接不可用,MOM會(huì)存儲(chǔ)消息,直到連接變得可用時(shí),再將消息轉(zhuǎn)發(fā)給應(yīng)用程序B 
       靈活性的另一方面體現(xiàn)在,當(dāng)應(yīng)用程序A發(fā)送其消息時(shí),應(yīng)用程序B甚至可以不處于執(zhí)行狀態(tài)。MOM將保留這個(gè)消息,直到應(yīng)用程序B開始執(zhí)行并試著檢索消息為止。這還防止了應(yīng)用程序A因?yàn)榈却龖?yīng)用程序B檢索消息而出現(xiàn)阻塞。 這種異步通信要求應(yīng)用程序的設(shè)計(jì)與現(xiàn)在大多數(shù)應(yīng)用程序不同,不過,對于時(shí)間無關(guān)或并行處理,它可能是一個(gè)極其有用的方法。

    2.2 消息中間件與分布式對象調(diào)用的比較

    分布式對象調(diào)用,如CORBARMIDCOM,提供了一種通訊機(jī)制,透明地在異構(gòu)的分布式計(jì)算環(huán)境中傳遞對象請求,而這些對象可以位于本地或遠(yuǎn)程機(jī)器。它通過在對象與對象之間提供一種統(tǒng)一的接口,使對象之間的調(diào)用和數(shù)據(jù)共享不再關(guān)心對象的位置、實(shí)現(xiàn)語言及所駐留的操作系統(tǒng)。這個(gè)接口就是面向?qū)ο蟮闹虚g件。

    盡管面向?qū)ο蟮闹虚g件是一種很強(qiáng)大的規(guī)范被廣泛應(yīng)用,但是面對大規(guī)模的復(fù)雜分布式系統(tǒng),這些技術(shù)也顯示出了局限性:

    1.同步通信:客戶發(fā)出調(diào)用后,必須等待服務(wù)對象完成處理并返回結(jié)果后才能繼續(xù)執(zhí)行。

    2.客戶和服務(wù)對象的生命周期緊密耦合:客戶進(jìn)程和服務(wù)對象進(jìn)程都必須正常運(yùn)行,如果由于服務(wù)對象崩潰或網(wǎng)絡(luò)故障導(dǎo)致客戶的請求不可達(dá),客戶會(huì)接收到異常。

    為了解決這些問題,出現(xiàn)了面向消息的中間件,它較好地解決了以上的問題。

    消息中間件作為一個(gè)中間層軟件,它為分布式系統(tǒng)中創(chuàng)建、發(fā)送、接收消息提供了一套可靠通用的方法,實(shí)現(xiàn)了分布式系統(tǒng)中可靠的、高效的、實(shí)時(shí)的跨平臺(tái)數(shù)據(jù)傳輸。消息中間件減少了開發(fā)跨平臺(tái)和網(wǎng)絡(luò)協(xié)議軟件的復(fù)雜性,它屏蔽了不同操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議的具體細(xì)節(jié),面對規(guī)模和復(fù)雜度都越來越高的分布式系統(tǒng),消息中間件技術(shù)顯示出了它的優(yōu)越性:

    1.采用異步通信模式:發(fā)送消息者可以在發(fā)送消息后進(jìn)行其它的工作,不用等待接收者的回應(yīng),而接收者也不必在接到消息后立即對發(fā)送者的請求進(jìn)行處理;

    2.客戶和服務(wù)對象生命周期的松耦合關(guān)系:客戶進(jìn)程和服務(wù)對象進(jìn)程不要求都正常運(yùn)行,如果由于服務(wù)對象崩潰或者網(wǎng)絡(luò)故障導(dǎo)致客戶的請求不可達(dá),客戶不會(huì)接收到異常,消息中間件能保證消息不會(huì)丟失。

     



    Author: orangelizq
    email: orangelizq@163.com

    歡迎大家訪問我的個(gè)人網(wǎng)站 萌萌的IT人
    posted on 2008-01-27 16:10 桔子汁 閱讀(13776) 評論(7)  編輯  收藏 所屬分類: J2EE

    評論:
    # re: 消息中間件原理及JMS簡介(1) 2008-01-27 17:26 | hanjs
    請問網(wǎng)閘可以支持什么協(xié)議的消息?  回復(fù)  更多評論
      
    # re: 消息中間件原理及JMS簡介(1)[未登錄] 2008-01-27 19:25 | Jarod
    怎么好像PRC中間件跟對象中間件是同一會(huì)事的  回復(fù)  更多評論
      
    # re: 消息中間件原理及JMS簡介(1) 2008-03-14 10:34 | lunatica
    消息中間件對于消息隊(duì)列的調(diào)用算法是怎么樣的呢?  回復(fù)  更多評論
      
    # re: 消息中間件原理及JMS簡介(1) 2008-11-27 16:00 | gfspirit
    謝謝,還是你寫的比較清楚  回復(fù)  更多評論
      
    # re: 消息中間件原理及JMS簡介(1) 2011-07-24 21:14 | faithful_czx
    @Jarod
    對象中間件是支持對象化的RPC調(diào)用。還是有差別的。  回復(fù)  更多評論
      
    # re: 消息中間件原理及JMS簡介(1) 2011-09-08 09:10 | roockee
    寫的很詳細(xì),學(xué)習(xí)了。  回復(fù)  更多評論
      
    # re: 消息中間件原理及JMS簡介(1) 2011-09-13 18:30 | yaohonv
    作為一個(gè)入門的了解  回復(fù)  更多評論
      
    主站蜘蛛池模板: 亚洲天堂中文字幕在线观看| 亚洲av无码乱码在线观看野外| 十八禁在线观看视频播放免费| 成人在线免费视频| 一本一道dvd在线观看免费视频| 羞羞视频免费网站入口| 香蕉视频免费在线| 一级一级一片免费高清| xxxxxx日本处大片免费看| 国产黄在线观看免费观看不卡| XXX2高清在线观看免费视频| 两个人看www免费视频| 99视频在线免费| 97国产免费全部免费观看| 免费三级毛片电影片| 最近中文字幕免费mv视频8| 免费无码又爽又高潮视频 | 黄页视频在线观看免费| 日本激情猛烈在线看免费观看 | 亚洲美国产亚洲AV| 久久水蜜桃亚洲AV无码精品| 免费看内射乌克兰女| 一区二区三区免费视频观看| 99久久免费国产特黄| 99热这里只有精品免费播放| 99在线精品视频观看免费| 免费的一级黄色片| 中文字幕在亚洲第一在线| 久久久无码精品亚洲日韩蜜桃| 亚洲福利电影一区二区?| 亚洲日韩乱码中文字幕| 91av免费在线视频| 最近在线2018视频免费观看| 久久久久国色AV免费观看性色| 国产在线观看免费不卡| 国产亚洲精品a在线观看app| 亚洲精品动漫在线| 亚洲A∨精品一区二区三区下载| 好湿好大好紧好爽免费视频| 99ee6热久久免费精品6| 日韩在线a视频免费播放|