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

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

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

    rednight

    0x2B|~0x2B,That's not a question,Just do it.
    posts - 32, comments - 14, trackbacks - 0, articles - 0

    轉(zhuǎn)自http://www.lrsolution.com/docs/MQvsWLJMS.html


    比較IBM MQSeries和BEA WebLogic JMS Server

    劉睿
    2005年7月

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

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

    在本文中,我盡量試圖從客觀的角度分析兩種產(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是使用本地語(yǔ)言(比如在UNIX和Windows上的C語(yǔ)言)編寫(xiě)的既支持C-S架構(gòu),又支持對(duì)等訪問(wèn)的實(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ù)器的開(kāi)發(fā)接口,并沒(méi)有定義JMS服務(wù)器與JMS服務(wù)器的規(guī)范,而客戶機(jī)方面沒(méi)有任何隊(duì)列,所以只能說(shuō)是規(guī)范了消息的存取,而沒(méi)有規(guī)范消息數(shù)據(jù)的傳輸。因?yàn)镴MS客戶機(jī)并不擁有存放數(shù)據(jù)的隊(duì)列,所以所有發(fā)送的操作都要由應(yīng)用程序來(lái)控制,JMS服務(wù)器本身并不代理傳輸,也不保證數(shù)據(jù)在遠(yuǎn)程隊(duì)列間傳輸?shù)目煽啃浴ebLogic JMS就是這樣的體系。

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

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

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

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

    WebLogic JMS一般只支持JAVA開(kāi)發(fā)。但BEA也在dev2dev.bea.com網(wǎng)站上提供了一套免費(fèi)的C的支持,稱(chēng)作“JMS C API”。參見(jiàn)http://dev2dev.bea.com/utilitiestools/environment.html?highlight=utilitiestools。但這個(gè)工具與老的MA88也是不能相提并論的,因?yàn)锽EA并不真正支持它,因此也基本沒(méi)有什么用戶。參見(jiàn)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是用本地語(yǔ)言實(shí)現(xiàn)的,因此帶來(lái)的好處是高性能和高并發(fā)的支持能力。MQSeries相對(duì)WebLogic JMS等產(chǎn)品的性能優(yōu)勢(shì)是非常明顯的,所以MQSeries非常適于企業(yè)級(jí)的大數(shù)據(jù)量和高并發(fā)的數(shù)據(jù)傳輸業(yè)務(wù)。誰(shuí)也無(wú)法想象一個(gè)企業(yè)級(jí)的數(shù)據(jù)應(yīng)用會(huì)采用一個(gè)純Java實(shí)現(xiàn)的數(shù)據(jù)庫(kù),因?yàn)槠湫阅軣o(wú)法滿足要求,對(duì)較大的數(shù)據(jù)傳輸應(yīng)用也是一樣的,純Java實(shí)現(xiàn)的JMS服務(wù)器例如WebLogic JMS無(wú)法滿足其性能的要求。

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

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

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

    • MQSeries支持支持真正的遠(yuǎn)程異步數(shù)據(jù)傳輸,甚至支持消息的路由,可以“多級(jí)跳”;WebLogic JMS不支持。
    • MQSeries支持消息的分組和分段傳輸,對(duì)于大消息傳輸和不穩(wěn)定的網(wǎng)絡(luò)非常有意義。WebLogic JMS沒(méi)有這方面的功能。
    • 二者都支持SSL、持久性、優(yōu)先級(jí)、超時(shí)等功能。除了完備的SSL實(shí)現(xiàn)之外,MQSeries的安全體系 遭到了一些批評(píng),使用通道的安全出口程序顯得很麻煩,而使用用戶名稱(chēng)但無(wú)須口令保護(hù)的遠(yuǎn)程數(shù)據(jù)通信,如何能令人滿意?但在這一點(diǎn)上WebLogic JMS也很難說(shuō)就好一些,因?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還支持一種稱(chēng)作Session Pool的類(lèi)似的觸發(fā)機(jī)制。但這類(lèi)觸發(fā)機(jī)制過(guò)于簡(jiǎn)化,也就是每個(gè)消息都觸發(fā)一個(gè)新的線程的應(yīng)用。MQSeries的觸發(fā)機(jī)制更豐富,不但包括這種被稱(chēng)作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沒(méi)有這方面的支持。

     

    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è)。有人說(shuō)所有支持JDK的平臺(tái)都能跑WebLogic JMS的客戶機(jī),這是不正確的說(shuō)法。因?yàn)镴MS是J2EE規(guī)范的一種,J2SE的SDK并不包括JMS的支持,更不要說(shuō)支持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)也不無(wú)一些道理。但是在有防火墻的TCP/IP網(wǎng)絡(luò)上,不同的方向還是有差異的。

     

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

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

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

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产又粗又长又硬免费视频| 最近中文字幕mv免费高清在线| 青青青国产免费一夜七次郎| 激情亚洲一区国产精品| 亚洲剧场午夜在线观看| 国产精品久免费的黄网站| 香蕉97超级碰碰碰免费公| 亚洲成AV人片在线观看| 免费网站观看WWW在线观看| 亚洲AV永久无码区成人网站| 久久久久久一品道精品免费看| 精品亚洲aⅴ在线观看| 精品国产免费人成电影在线观看| 久久精品国产亚洲AV久| 在线播放免费播放av片| 理论片在线观看免费| 国产亚洲福利精品一区| 99久久99这里只有免费费精品 | 无码久久精品国产亚洲Av影片| 国产在线一区二区综合免费视频| 蜜芽亚洲av无码精品色午夜| 免费看污成人午夜网站| 亚洲av日韩aⅴ无码色老头| 色噜噜AV亚洲色一区二区| 免费无遮挡无码永久视频| 亚洲欧洲免费无码| 久久久久亚洲?V成人无码| 99在线免费观看视频| 亚洲欧美日韩中文无线码 | 8888四色奇米在线观看免费看| 亚洲欧洲日韩极速播放 | 亚洲成人一区二区| 日本人成在线视频免费播放| 亚洲乱码在线观看| 狠狠综合久久综合88亚洲| aⅴ免费在线观看| 四虎国产精品成人免费久久| 精品无码一区二区三区亚洲桃色| 国产精品国产午夜免费福利看 | 亚洲制服中文字幕第一区| 国产美女精品视频免费观看|