




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、消息隊列MQ 技術(shù)的介紹和原理(2010-03-14 00:00:00)轉(zhuǎn)載標簽:雜談消息隊列技術(shù)是分布式應用間交換信息的一種技術(shù)。消息隊列可駐留在內(nèi)存或磁盤上,隊列存儲消息直到它們被應用程序讀走。通過消息隊列,應用程序可獨立地執(zhí)行-它們不需要知道彼此的位置、或在繼續(xù)執(zhí)行前不需要等待接收程序接收此消息。消息中間件概述消息隊列技術(shù)是分布式應用間交換信息的一種技術(shù)。消息隊列可駐留在內(nèi)存或磁盤上,隊列存儲消息直到它們被應用程序讀走。通過消息隊列,應用程序可獨立地執(zhí)行-它們不需要知道彼此的位置、或在繼續(xù)執(zhí)行前不需要等待接收程序接收此消息。在分布式計算環(huán)境中,為了集成分布式應用,開發(fā)者需要對異構(gòu)網(wǎng)絡環(huán)境
2、下的分布式應用提供有效的通信手段。為了管理需要共享的信息,對應用提供公共的信息交換機制是重要的。設計分布式應用的方法主要有:遠程過程調(diào)用(PRC)-分布式計算環(huán)境(DCE)的基礎標準成分之一;對象事務監(jiān)控(OTM)- 基于CORBA 的面向?qū)ο蠊I(yè)標準與事務處理(TP)監(jiān)控技術(shù)的組合;消息隊列(MessageQueue)-構(gòu)造分布式應用的松耦合方法。分布計算環(huán)境/遠程過程調(diào)用(DCE/RPC)RPC 是 DCE 的成分,是一個由開放軟件基金會(OSF)發(fā)布的應用集成的軟件標準。RPC 模仿一個程序用函數(shù)引用來引用另一程序的傳統(tǒng)程序設計方法,此引用是過程調(diào)用的形式,一旦被調(diào)用,程序的控制則轉(zhuǎn)向被
3、調(diào)用程序。在 RPC 實現(xiàn)時,被調(diào)用過程可在本地或遠地的另一系統(tǒng)中駐留并在執(zhí)行。當被調(diào)用程序完成處理輸入數(shù)據(jù),結(jié)果放在過程調(diào)用的返回變量中返回到調(diào)用程序。RPC 完成后程序控制則立即返回到調(diào)用程序。因此RPC 模仿子程序的調(diào)用/返回結(jié)構(gòu),它僅提供了Client(調(diào)用程序 )和 Server(被調(diào)用過程)間的同步數(shù)據(jù)交換。對象事務監(jiān)控(OTM)基于 CORBA 的面向?qū)ο蠊I(yè)標準與事務處理(TP)監(jiān)控技術(shù)的組合,在 CORBA 規(guī)范中定義了:使用面向?qū)ο蠹夹g(shù)和方法的體系結(jié)構(gòu);公共的Client/Server 程序設計接口;多平臺間傳輸和翻譯數(shù)據(jù)的指導方針;開發(fā)分布式應用接口的語言(IDL) 等,
4、并為構(gòu)造分布的Client/Server 應用提供了廣泛及一致的模式。消息隊列(Message Queue)消息隊列為構(gòu)造以同步或異步方式實現(xiàn)的分布式應用提供了松耦合方法。消息隊列的API調(diào)用被嵌入到新的或現(xiàn)存的應用中,通過消息發(fā)送到內(nèi)存或基于磁盤的隊列或從它讀出而提供信息交換。消息隊列可用在應用中以執(zhí)行多種功能,比如要求服務、交換信息或異步處理中間件是一種獨立的系統(tǒng)軟件或服務程序,分布式應用系統(tǒng)借助這種軟件在不同的技術(shù)之間共享資源,管理計算資源和網(wǎng)絡通訊。它在計算機系統(tǒng)中是一個關(guān)鍵軟件,它能實現(xiàn)應用的互連和互操作性,能保證系統(tǒng)的安全、可靠、高效的運行。中間件位于用戶應用和操作系統(tǒng)及網(wǎng)絡軟件之
5、間,它為應用提供了公用的通信手段,并且獨立于網(wǎng)絡和操作系統(tǒng)。中間件為開發(fā)者提供了公用于所有環(huán)境的應用程序接口,當應用程序中嵌入其函數(shù)調(diào)用,它便可利用其運行的特定操作系統(tǒng)和網(wǎng)絡環(huán)境的功能,為應用執(zhí)行通信功能。如果沒有消息中間件完成信息交換,應用開發(fā)者為了傳輸數(shù)據(jù),必須要學會如何用網(wǎng)絡和操作系統(tǒng)軟件的功能,編寫相應的應用程序來發(fā)送和接收信息,且交換信息沒有標準方法,每個應用必須進行特定的編程從而和多平臺、不同環(huán)境下的一個或多個應用通信。例如, 為了實現(xiàn)網(wǎng)絡上不同主機系統(tǒng)間的通信,將要求具備在網(wǎng)絡上如何交換信息的知識(比如用TCP/IP 的 socket程序設計);為了實現(xiàn)同一主機內(nèi)不同進程之間的通
6、訊,將要求具備操作系統(tǒng)的消息隊列或命名管道(Pipes)等知識。目前中間件的種類很多,如交易管理中間件(如 IBM 的 CICS)、面向Java應用的 Web 應用服務器中間件(如 IBM 的 WebSphere Application Server) 等, 而消息傳輸中間件(MOM) 是其中的一種。它簡化了應用之間數(shù)據(jù)的傳輸,屏蔽底層異構(gòu)操作系統(tǒng)和網(wǎng)絡平臺,提供一致的通訊標準和應用開發(fā),確保分布式計算網(wǎng)絡環(huán)境下可靠的、跨平臺的信息傳輸和數(shù)據(jù)交換。它基于消息隊列的存儲-轉(zhuǎn)發(fā)機制,并提供特有的異步傳輸機制,能夠基于消息傳輸和異步事務處理實現(xiàn)應用整合與數(shù)據(jù)交換。IBM 消息中間件MQ 以其獨特的安
7、全機制、簡便快速的編程風格、卓越不凡的穩(wěn)定性、可擴展性和跨平臺性,以及強大的事務處理能力和消息通訊能力,成為業(yè)界市場占有率最高的消息中間件產(chǎn)品。 TOC o 1-5 h z MQ 具有強大的跨平臺性,它支持的平臺數(shù)多達35 種。 它支持各種主流Unix 操作系統(tǒng)平臺,如: HP-UX、 AIX 、 SUN Solaris、 Digital UNIX 、 Open VMX 、 SUNOS、 NCR UNIX ;支持 各種主機平臺,如:OS/390、 MVS/ESA 、 VSE/ESA ;同樣支持Windows NT 服務器。在PC平臺上支持Windows9X/Windows NT/Windows
8、 2000 和 UNIX (UnixWare 、 Solaris)以及主要的 Linux 版本(Redhat、 TurboLinux 等 )。 此外, MQ 還支持其他各種操作系統(tǒng)平臺,如:OS/2、AS/400 、 Sequent DYNIX 、 SCO OpenServer、 SCO UnixWare 、 Tandem 等。MQ 的基本概念:隊列管理器隊列管理器是MQ 系統(tǒng)中最上層的一個概念,由它為我們提供基于隊列的消息服務。消息在 MQ 中,我們把應用程序交由MQ 傳輸?shù)臄?shù)據(jù)定義為消息,我們可以定義消息的內(nèi)容并對消息進行廣義的理解,比如: 用戶的各種類型的數(shù)據(jù)文件,某個應用向其它應用發(fā)出
9、的處理請求等都可以作為消息。消息有兩部分組成:消息描述符(Message Discription 或 Message Header),描述消息的特征,如:消息的優(yōu)先級、生命周期、消息Id 等;消息體 (Message Body),即用戶數(shù)據(jù)部分。在MQ 中,消息分為兩種類型,非永久性(non-persistent)消息和永久性(persistent)消息, 非永久性消息是存儲在內(nèi)存中的,它是為了提高性能而設計的,當系統(tǒng)掉電或MQ 隊列管理器重新啟動時,將不可恢復。當用戶對消息的可靠性要求不高,而側(cè)重系統(tǒng)的性能表現(xiàn)時,可以采用該種類型的消息,如:當發(fā)布股票信息時,由于股票信息是不斷更新的,我們可
10、能每若干秒就會發(fā)布一次,新的消息會不斷覆蓋舊的消息。永久性消息是存儲在硬盤上,并且紀錄數(shù)據(jù)日志的,它具有高可靠性,在網(wǎng)絡和系統(tǒng)發(fā)生故障等情況下都能確保消息不丟、不重。此外,在MQ 中,還有邏輯消息和物理消息的概念。利用邏輯消息和物理消息,我們可以將大消息進行分段處理,也可以將若干個本身完整的消息在應用邏輯上歸為一組進行處理。隊列隊列是消息的安全存放地,隊列存儲消息直到它被應用程序處理。消息隊列以下述方式工作:程序 A 形成對消息隊列系統(tǒng)的調(diào)用,此調(diào)用告知消息隊列系統(tǒng),消息準備好了投向程序 B;消息隊列系統(tǒng)發(fā)送此消息到程序B 駐留處的系統(tǒng),并將它放到程序B 的隊列中;適當時間后,程序B 從它的隊
11、列中讀此消息,并處理此信息。由于采用了先進的程序設計思想以及內(nèi)部工作機制,MQ 能夠在各種網(wǎng)絡條件下保證消息的可靠傳遞,可以克服網(wǎng)絡線路質(zhì)量差或不穩(wěn)定的現(xiàn)狀,在傳輸過程中,如果通信線路出現(xiàn)故障或遠端的主機發(fā)生故障,本地的應用程序都不會受到影響,可以繼續(xù)發(fā)送數(shù)據(jù),而無需等待網(wǎng)絡故障恢復或遠端主機正常后再重新運行。在 MQ 中,隊列分為很多種類型,其中包括:本地隊列、遠程隊列、模板隊列、動態(tài)隊列、別名隊列等。本地隊列又分為普通本地隊列和傳輸隊列,普通本地隊列是應用程序通過API 對其進行讀寫操作的隊列;傳輸隊列可以理解為存儲-轉(zhuǎn)發(fā)隊列,比如:我們將某個消息交給MQ 系統(tǒng)發(fā)送到遠程主機,而此時網(wǎng)絡發(fā)
12、生故障,MQ 將把消息放在傳輸隊列中暫存,當網(wǎng)絡恢復時,再發(fā)往遠端目的地。遠程隊列是目的隊列在本地的定義,它類似一個地址指針,指向遠程主機上的某個目的隊列,它僅僅是個定義,不真正占用磁盤存儲空間。模板隊列和動態(tài)隊列是MQ 的一個特色,它的一個典型用途是用作系統(tǒng)的可擴展性考慮。我們可以創(chuàng)建一個模板隊列,當今后需要新增隊列時,每打開一個模板隊列,MQ 便會自動生成一個動態(tài)隊列,我們還可以指定該動態(tài)隊列為臨時隊列或者是永久隊列,若為臨時隊列我們可以在關(guān)閉它的同時將它刪除,相反,若為永久隊列,我們可以將它永久保留,為我所用。通道通道是 MQ 系統(tǒng)中隊列管理器之間傳遞消息的管道,它是建立在物理的網(wǎng)絡連接
13、之上的一個邏輯概念,也是MQ 產(chǎn)品的精華。在 MQ 中,主要有三大類通道類型,即消息通道,MQI 通道和 Cluster 通道。消息通道是用于在 MQ 的服務器和服務器之間傳輸消息的,需要強調(diào)指出的是,該通道是單向的,它又有發(fā)送 (sender), 接收 (receive), 請求者 (requestor), 服務者 (server)等不同類型,供用戶在不同情況下使用。MQI 通道是 MQ Client 和MQI 通道是 MQ Client 和 MQ Server 之間通訊和傳輸消息用的,與消息通道不同,它的傳輸是雙向的。群集(Cluster)通道是位于同一個MQ 群集內(nèi)部的隊列管理器之間通訊
14、使用的。MQ 的工作原理(圖見附件)首先來看本地通訊的情況,應用程序A 和應用程序B 運行于同一系統(tǒng)A,它們之間可以借助消息隊列技術(shù)進行彼此的通訊:應用程序A 向隊列 1 發(fā)送一條信息,而當應用程序B 需要時就可以得到該信息。其次是遠程通訊的情況,如果信息傳輸?shù)哪繕烁臑樵谙到y(tǒng)B 上的應用程序C,這種變化不會對應用程序A 產(chǎn)生影響,應用程序A 向隊列 2 發(fā)送一條信息,系統(tǒng)A 的 MQ 發(fā)現(xiàn) Q2 所指向的目的隊列實際上位于系統(tǒng)B,它將信息放到本地的一個特殊隊列傳輸隊列(Transmission Queue)。我們建立一條從系統(tǒng)A 到系統(tǒng) B 的消息通道,消息通道代理將從傳輸隊列中讀取消息,并傳
15、遞這條信息到系統(tǒng)B,然后等待確認。只有MQ 接到系統(tǒng)B 成功收到信息的確認之后,它才從傳輸隊列中真正將該信息刪除。如果通訊線路不通,或系統(tǒng) B不在運行,信息會留在傳輸隊列中,直到被成功地傳送到目的地。這是MQ 最基本而最重要的技術(shù)-確保信息傳輸,并且是一次且僅一次(once-and-only-once) 的傳遞。MQ 提供了用于應用集成的松耦合的連接方法,因為共享信息的應用不需要知道彼此物理位置(網(wǎng)絡地址);不需要知道彼此間怎樣建立通信;不需要同時處于運行狀態(tài);不需要在同樣的操作系統(tǒng)或網(wǎng)絡環(huán)境下運行。MQ 的基本配置舉例在上圖中,要實現(xiàn)網(wǎng)絡上兩臺主機上的通訊,若采用點對點的通訊方式,我們至少要
16、建立如下 MQ 的對象:在發(fā)送方A:1)建立隊列管理器QMA: crtmqm -q QMA2)定義本地傳輸隊列: define qlocal (QMB) usage (xmitq) defpsist(yes)3)創(chuàng)建遠程隊列: define qremote (QR.TOB) rname (LQB) rqmname (QMB) xmitq (QMB)4)定義發(fā)送通道: define channel (A.TO.B) chltype (sdr) conname (IP of B) xmitq (QMB) +trptype (tcp)在接收方B :1)建立隊列管理器QMB: crtmqm -q QM
17、B2)定義本地隊列QLB: define qlocal (LQB)3)創(chuàng)建接收通道: define channel (A.TO.B) chltype (rcvr) trptype (tcp)經(jīng)過上述配置,我們就可以實現(xiàn)從主機A 到 B 的單向通訊,若要實現(xiàn)二者之間的雙向通訊,可參考此例創(chuàng)建所需要的MQ 對象。MQ 的通訊模式點對點通訊:點對點方式是最為傳統(tǒng)和常見的通訊方式,它支持一對一、一對多、多對多、多對一等多種配置方式,支持樹狀、網(wǎng)狀等多種拓撲結(jié)構(gòu)。多點廣播:MQ 適用于不同類型的應用。其中重要的,也是正在發(fā)展中的是多點廣播應用,即能夠?qū)⑾l(fā)送到多個目標站點(Destination Li
18、st) ??梢允褂靡粭lMQ 指令將單一消息發(fā)送到多個目標站點,并確保為每一站點可靠地提供信息。MQ 不僅提供了多點廣播的功能,而且還擁有智能消息分發(fā)功能,在將一條消息發(fā)送到同一系統(tǒng)上的多個用戶時,MQ將消息的一個復制版本和該系統(tǒng)上接收者的名單發(fā)送到目標MQ 系統(tǒng)。目標MQ 系統(tǒng)在本地復制這些消息,并將它們發(fā)送到名單上的隊列,從而盡可能減少網(wǎng)絡的傳輸量。發(fā)布/訂閱(Publish/Subscribe)模式: 發(fā)布/訂閱功能使消息的分發(fā)可以突破目的隊列地理指向的限制,使消息按照特定的主題甚至內(nèi)容進行分發(fā),用戶或應用程序可以根據(jù)主題或內(nèi)容接收到所需要的消息。發(fā)布/訂閱功能使得發(fā)送者和接收者之間的耦合關(guān)系變得更為松散,發(fā)送者不必關(guān)心接收者的目的地址,而接收者也不必關(guān)心消息的發(fā)送地址,而只是根據(jù)消息的主題進行消息的收發(fā)。在 M
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能穿戴設備研發(fā)人員個人勞動合同書
- 2025年度股權(quán)抵押消費金融合同
- 二零二五年度同居關(guān)系終止合同書
- 二零二五年度瑜伽教練就業(yè)保障聘用合同
- 2025年度村委會林地承包與林業(yè)科研合作合同
- 浙江國企招聘2024臺州市椒江區(qū)社會事業(yè)發(fā)展集團有限公司招聘3人筆試參考題庫附帶答案詳解
- 2025青海省投招聘59人查筆試參考題庫附帶答案詳解
- 《臨床試驗的監(jiān)查》課件
- 電梯構(gòu)造知識培訓課件
- 教育測量與評價知到智慧樹章節(jié)測試課后答案2024年秋石河子大學
- 新人教版五年級小學數(shù)學全冊奧數(shù)(含答案)
- 健康體檢報告分析結(jié)果
- 2024年?;钒踩芾碇贫群蛵徫话踩僮饕?guī)程(9篇范文)
- 無人機固定翼行業(yè)報告
- 《莖和葉》名師課件
- 玻璃體腔注射-操作流程和注意事項(特選參考)課件
- JGJ114-2014 鋼筋焊接網(wǎng)混凝土結(jié)構(gòu)技術(shù)規(guī)程
- 110kV升壓站構(gòu)支架組立施工方案
- CONSORT2010流程圖(FlowDiagram)【模板】文檔
- 前廳月工作計劃
- 生物醫(yī)學工程倫理 課件全套 第1-10章 生物醫(yī)學工程與倫理-醫(yī)學技術(shù)選擇與應用的倫理問題
評論
0/150
提交評論