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

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

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

    空間站

    北極心空

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks

    比較IBM MQSeries和BEA WebLogic JMS Server(轉(zhuǎn)載)

    關(guān)鍵詞MQSeries ?? WebLogic ?? JMS ?? ??????????????????????????????????????

    比較IBM MQSeries和BEA WebLogic JMS Server

    原文:http://www.lrsolution.com/docs/MQvsWLJMS.html

    劉睿
    2005年7月

    在面向消息的中間件(MOM)這個(gè)領(lǐng)域,IBM MQSeries (又稱WebSphere MQ)一直是當(dāng)仁不讓的超級(jí)大哥,其它還有一些小兄弟,比如SwiftMQSonicMQ之類。但近年來隨著J2EE中的JMS規(guī)范的建立,完備地支持JMS的服務(wù)器如雨后春筍般地出現(xiàn),比如BEA WebLogic Server的JMS Server就是其中一個(gè)佼佼者。

    僅僅就JMS規(guī)范來說,MQSeries與WebLogic JMS沒有什么不同之處。但JMS規(guī)范僅僅定義了消息服務(wù)器的一個(gè)開發(fā)接口,而且還忽略了許多細(xì)節(jié),所以不同之處就在JMS規(guī)范之外的這些內(nèi)容,很多也是非常重要的。總的來說,MQSeries的功能和性能方面明顯占優(yōu),而WebLogic JMS的某些JMS配置更加簡單易行。

    在本文中,我盡量試圖從客觀的角度分析兩種產(chǎn)品的差異,如有不妥之處,請(qǐng)讀者不吝賜教。

    1. 產(chǎn)品體系架構(gòu)不同造成的差異

    WebLogic JMS是一個(gè)純Java實(shí)現(xiàn)的支持C-S架構(gòu)的實(shí)現(xiàn)JMS規(guī)范的服務(wù)器產(chǎn)品;而MQSeries是使用本地語言(比如在UNIX和Windows上的C語言)編寫的既支持C-S架構(gòu),又支持對(duì)等訪問的實(shí)現(xiàn)完備MOM(包括JMS規(guī)范)的產(chǎn)品。于是就產(chǎn)生出以下的不同點(diǎn):

    1.1 MQSeries支持真正的異步數(shù)據(jù)傳輸;而WebLogic JMS不支持。

    異步發(fā)送數(shù)據(jù)到遠(yuǎn)端的消息服務(wù)器,是MQSeries等完備的MOM的特色。JMS規(guī)范規(guī)定了一個(gè)C-S架構(gòu),定義了JMS客戶機(jī)與JMS服務(wù)器的開發(fā)接口,并沒有定義JMS服務(wù)器與JMS服務(wù)器的規(guī)范,而客戶機(jī)方面沒有任何隊(duì)列,所以只能說是規(guī)范了消息的存取,而沒有規(guī)范消息數(shù)據(jù)的傳輸。因?yàn)镴MS客戶機(jī)并不擁有存放數(shù)據(jù)的隊(duì)列,所以所有發(fā)送的操作都要由應(yīng)用程序來控制,JMS服務(wù)器本身并不代理傳輸,也不保證數(shù)據(jù)在遠(yuǎn)程隊(duì)列間傳輸?shù)目煽啃浴ebLogic JMS就是這樣的體系。

    這種體系結(jié)構(gòu)有時(shí)候是不能直接滿足應(yīng)用的要求的。首先,為了充分利用資源和提高效率,許多應(yīng)用需要采用異步消息的機(jī)制。其次,許多需要快速返回的應(yīng)用也必須使用異步傳輸。比如電話自動(dòng)語音應(yīng)答(IVR)的程序,某個(gè)操作需要把數(shù)據(jù)傳輸?shù)竭h(yuǎn)程的服務(wù)器上,但是必須立即返回,接受客戶的下一個(gè)按鍵。

    MQSeries通過通道與傳輸隊(duì)列和遠(yuǎn)程隊(duì)列來完成這一任務(wù)。能充分利用網(wǎng)絡(luò)的帶寬,甚至支持?jǐn)嗑W(wǎng)續(xù)傳,保證數(shù)據(jù)傳輸?shù)目煽啃浴.?dāng)然,雖然應(yīng)用程序不必作任何工作,但配置方面確實(shí)還要多學(xué)一些概念。

    1.2 MQSeries支持多種語言的開發(fā);而WebLogic JMS基本上只支持JAVA

    MQSeries支持的語言包括C, C++, COBOL, JAVA, PL/1, REXX, RPG, Visual Basic (使用COM/ActiveX)等。老板本的MQSeries支持JAVA是通過一個(gè)叫MA88的SupportPac來實(shí)現(xiàn),雖然經(jīng)過廣泛的使用和驗(yàn)證,但給人的感覺是不太方便。好在從5.3版起(目前最新的是6.0版),JAVA支持已經(jīng)內(nèi)置在MQSeries中。

    WebLogic JMS一般只支持JAVA開發(fā)。但BEA也在dev2dev.bea.com網(wǎng)站上提供了一套免費(fèi)的C的支持,稱作“JMS C API”。參見http://dev2dev.bea.com/utilitiestools/environment.html?highlight=utilitiestools。但這個(gè)工具與老的MA88也是不能相提并論的,因?yàn)锽EA并不真正支持它,因此也基本沒有什么用戶。參見BEA網(wǎng)站上關(guān)于“JMS C API”的警告:

    This is *not* a supported product of BEA. However, if you have questions about this API you can post them to weblogic.developer.interest.jms.

    1.3 純JAVA實(shí)現(xiàn)的利與弊

    MQSeries是用本地語言實(shí)現(xiàn)的,因此帶來的好處是高性能和高并發(fā)的支持能力。MQSeries相對(duì)WebLogic JMS等產(chǎn)品的性能優(yōu)勢(shì)是非常明顯的,所以MQSeries非常適于企業(yè)級(jí)的大數(shù)據(jù)量和高并發(fā)的數(shù)據(jù)傳輸業(yè)務(wù)。誰也無法想象一個(gè)企業(yè)級(jí)的數(shù)據(jù)應(yīng)用會(huì)采用一個(gè)純Java實(shí)現(xiàn)的數(shù)據(jù)庫,因?yàn)槠湫阅軣o法滿足要求,對(duì)較大的數(shù)據(jù)傳輸應(yīng)用也是一樣的,純Java實(shí)現(xiàn)的JMS服務(wù)器例如WebLogic JMS無法滿足其性能的要求。

    純JAVA實(shí)現(xiàn)的JMS服務(wù)器也有其好處,就是與其它的J2EE服務(wù)完美地集成在一起。所以WebLogic的JMS配置顯得更簡潔。WebSphere+MQSeries也配合得很好,但總是能感覺到是這兩個(gè)產(chǎn)品。WebLogic JMS的對(duì)象體系完全符合JMS的概念體系。而MQSeries要通過WebSphere Application Server或者一個(gè)叫JMSAdmin的工具,借助于目錄服務(wù)來完成MQSeries概念體系到JMS概念體系的映射。應(yīng)該是看到了這件事造成的麻煩,所以IBM在WebSphere v6也提供了一套純JAVA實(shí)現(xiàn)的、與MQSeries可以互操作的JMS服務(wù)器。另外一點(diǎn)是WebLogic不需要WebSphere以及MQSeries那樣的冗長的CLASSPATH等環(huán)境變量的設(shè)置,這點(diǎn)對(duì)開發(fā)人員有吸引力。

    1.4 MQSeries的通信功能更加強(qiáng)大,WebLogic JMS也有自己的一些特色

    JMS對(duì)通信功能的要求很少,所以對(duì)二者對(duì)通信支持能力還是有很大的差別的。總的來說,歷史更悠久的MQSeries占優(yōu),但WebLogic JMS也有自己的特色。

    • MQSeries支持支持真正的遠(yuǎn)程異步數(shù)據(jù)傳輸,甚至支持消息的路由,可以“多級(jí)跳”;WebLogic JMS不支持。
    • MQSeries支持消息的分組和分段傳輸,對(duì)于大消息傳輸和不穩(wěn)定的網(wǎng)絡(luò)非常有意義。WebLogic JMS沒有這方面的功能。
    • 二者都支持SSL、持久性、優(yōu)先級(jí)、超時(shí)等功能。除了完備的SSL實(shí)現(xiàn)之外,MQSeries的安全體系 遭到了一些批評(píng),使用通道的安全出口程序顯得很麻煩,而使用用戶名稱但無須口令保護(hù)的遠(yuǎn)程數(shù)據(jù)通信,如何能令人滿意?但在這一點(diǎn)上WebLogic JMS也很難說就好一些,因?yàn)閃ebLogic JMS僅僅支持C-S的操作,系統(tǒng)本身并不支持遠(yuǎn)程的數(shù)據(jù)傳輸(需要應(yīng)用實(shí)現(xiàn))。
    • WebLogic JMS支持IP多播會(huì)話,能顯著地提高 局域網(wǎng)內(nèi)廣播通信的性能,但這種方式不保證數(shù)據(jù)接收的可靠性,只適于某些特定的應(yīng)用。MQSeries本身不提供此功能,但在Event Broker和Message Broker等MQSeries的升級(jí)產(chǎn)品中提供IP多播的支持。

    1.5 MQSeries的管理功能更加強(qiáng)大

    JMS對(duì)管理功能的要求很少,在這方面MQSeries也有比較明顯的優(yōu)勢(shì)。

    • JMS對(duì)事務(wù)處理的支持包括的對(duì)XASession和XAConnection實(shí)現(xiàn),這一點(diǎn)對(duì)MQSeries和WebLogic JMS是相同的。MQSeries本身還可以作為事務(wù)管理器,協(xié)調(diào)兩階段提交。
    • MQSeries和WebLogic JMS都支持Message Driven Bean作為觸發(fā)新的應(yīng)用的一種方式。WebLogic JMS還支持一種稱作Session Pool的類似的觸發(fā)機(jī)制。但這類觸發(fā)機(jī)制過于簡化,也就是每個(gè)消息都觸發(fā)一個(gè)新的線程的應(yīng)用。MQSeries的觸發(fā)機(jī)制更豐富,不但包括這種被稱作Every的方式,還包括First和Depth等方式。另外MQSeries還可以觸發(fā)各種執(zhí)行程序或者M(jìn)QSeries的通道。
    • MQSeries擁有一套完備的日志系統(tǒng),可以進(jìn)行獨(dú)立的系統(tǒng)備份和恢復(fù),因此適于高規(guī)格的數(shù)據(jù)/消息傳輸?shù)膽?yīng)用。WebLogic JMS沒有這方面的支持。

     

    2. 產(chǎn)品歷史的不同造成的差異

    MQSeries是個(gè)歷史悠久的產(chǎn)品,而WebLogic JMS是個(gè)新兵,因此會(huì)有以下的差異:

    2.1 MQSeries支持更多的系統(tǒng)平臺(tái)

    支持30多種系統(tǒng)平臺(tái)。當(dāng)然值得注意的是某些平臺(tái)的MQSeries是由合作伙伴實(shí)現(xiàn)的。

    WebLogic JMS是個(gè)新產(chǎn)品,支持的平臺(tái)數(shù)與WebLogic Server一樣,只有常用的幾個(gè)。有人說所有支持JDK的平臺(tái)都能跑WebLogic JMS的客戶機(jī),這是不正確的說法。因?yàn)镴MS是J2EE規(guī)范的一種,J2SE的SDK并不包括JMS的支持,更不要說支持WebLogic的J2EE了。

    2.2 MQSeries支持更多的通信協(xié)議

    MQSeries支持很多通信協(xié)議,但目前在實(shí)踐中常用的是TCP/IP協(xié)議和SNA協(xié)議。

    WebLogic JMS僅支持TCP/IP協(xié)議。

    有些人對(duì)MQSeries的單向通道的概念提出了異議,認(rèn)為增加了配置的復(fù)雜性,僅僅是SNA協(xié)議的需要,而不是TCP/IP協(xié)議的需要。我個(gè)人認(rèn)為這點(diǎn)也不無一些道理。但是在有防火墻的TCP/IP網(wǎng)絡(luò)上,不同的方向還是有差異的。

     

    3. 群集實(shí)現(xiàn)的差異

    MQSeries與WebLogic JMS在支持群集時(shí),差異比較大,應(yīng)該說各有各的特點(diǎn)。

    • MQSeries的群集建立在配置庫和群集通道基礎(chǔ)之上,可以定義“共享隊(duì)列”;WebLogic JMS的群集建立在WebLogic群集基礎(chǔ)之上,可以定義“分布式隊(duì)列”。
    • MQSeries在寫共享隊(duì)列時(shí),如果發(fā)現(xiàn)本地有,就只寫本地的隊(duì)列(這稱作本地優(yōu)先);如果本地沒有,就會(huì)輪流寫到所有定義了此共享隊(duì)列的隊(duì)列管理器。MQSeries在讀共享隊(duì)列時(shí),只能從本地取。WebLogic JMS在讀寫分布式隊(duì)列時(shí),不受本地影響,總是進(jìn)行輪流或權(quán)重選擇。聽起來似乎WebLogic JMS的群集更靈活,其實(shí)也不盡然。當(dāng)取得了JMS的對(duì)象QueueSender或QueueReceiver后,WebLogic實(shí)際上已經(jīng)綁定了一個(gè)JMS服務(wù)器的實(shí)例。如果每次寫或讀一個(gè)消息,都重新生成QueueSender或QueueReceiver,雖然比較好地支持了負(fù)載均衡,但勢(shì)必造成很大的性能損失。而MQSeries在輪流寫共享隊(duì)列時(shí),沒有這方面的問題。
    • WebLogic JMS的分布式隊(duì)列有一個(gè)叫做Forward Delay的有意思的屬性,定義了一個(gè)時(shí)間的長度。系統(tǒng)一旦發(fā)現(xiàn)超過這個(gè)時(shí)間長度,還沒有人讀這個(gè)隊(duì)列,就把它的消息轉(zhuǎn)送給群集中有消費(fèi)者的隊(duì)列。有了這個(gè)屬性,應(yīng)用程序就可以只從一個(gè)JMS服務(wù)器的實(shí)例讀消息了。

     



    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=574051

    posted on 2006-12-15 20:34 蘆葦 閱讀(823) 評(píng)論(0)  編輯  收藏 所屬分類: JAVA其他
    主站蜘蛛池模板: 亚洲成av人片在线观看天堂无码| 亚洲AV无码AV男人的天堂不卡| 亚洲ts人妖网站| 曰皮全部过程视频免费国产30分钟| 亚洲av女电影网| 成人免费a级毛片无码网站入口| 久久亚洲国产精品成人AV秋霞| 成人一区二区免费视频| 亚洲乱码卡一卡二卡三| 亚洲高清国产拍精品青青草原| 亚洲一区中文字幕在线观看| 中文字幕无线码中文字幕免费| 日韩a在线观看免费观看| 一级特黄录像视频免费| 区久久AAA片69亚洲| 91九色老熟女免费资源站| 亚洲久热无码av中文字幕| 国产偷国产偷亚洲高清日韩| 久久精品国产这里是免费| 亚洲香蕉久久一区二区| 免费a级毛片大学生免费观看| 亚洲精品亚洲人成在线播放| 免费一级国产生活片| 四虎国产精品永久免费网址| 亚洲一区中文字幕在线观看| 黄网址在线永久免费观看 | 久久午夜羞羞影院免费观看| 亚洲综合综合在线| 国产精品黄页在线播放免费| 中国好声音第二季免费播放| 亚洲国产成人资源在线软件| 亚洲国产午夜福利在线播放| 99久在线国内在线播放免费观看| 亚洲国产成人VA在线观看| 222www免费视频| 一区二区视频在线免费观看| 亚洲资源在线视频| 国外亚洲成AV人片在线观看| 成人毛片免费在线观看| 国产日韩AV免费无码一区二区| 亚洲精品一品区二品区三品区|