1. 程式人生 > >IBM MQ介紹

IBM MQ介紹

               

IBM MQ(IBM Message Queue)是IBM的一款商業訊息中間產品,適用於分散式計算環境或異構系統之中。訊息佇列技術是分散式應用間交換資訊的一種技術。訊息佇列可駐留在記憶體或磁碟上,佇列儲存訊息直到它們被應用程式讀走。通過訊息佇列,應用程式可獨立地執行--它們不需要知道彼此的位置、或在繼續執行前不需要等待接收程式接收此訊息。MQ基本概念1、對列管理器     佇列管理器是MQ系統中最上層的一個概念,由它為我們提供基於佇列的訊息服務。2、訊息     在MQ中,我們把應用程式交由MQ傳輸的資料定義為訊息,我們可以定義訊息的內容並對訊息進行廣義的理解,比如:使用者的各種型別的資料檔案,某個應用向其它應用發出的處理請求等都可以作為訊息。訊息有兩部分組成:訊息描述符(Message Discription或Message Header),描述訊息的特徵,如:訊息的優先順序、生命週期、訊息Id等;消 息體(Message Body),即使用者資料部分。在MQ中,訊息分為兩種型別,非永久性(non-persistent)訊息和永久性(persistent)訊息,非永久 性訊息是儲存在記憶體中的,它是為了提高效能而設計的,當系統掉電或MQ佇列管理器重新啟動時,將不可恢復。當用戶對訊息的可靠性要求不高,而側重系統的性 能表現時,可以採用該種類型的訊息,如:當釋出股票資訊時,由於股票資訊是不斷更新的,我們可能每若干秒就會發布一次,新的訊息會不斷覆蓋舊的訊息。永久 性訊息是儲存在硬碟上,並且紀錄資料日誌的,它具有高可靠性,在網路和系統發生故障等情況下都能確保訊息不丟、不重。       此外,在MQ中,還有邏輯訊息和物理訊息的概念。利用邏輯訊息和物理訊息,我們可以將大訊息進行分段處理,也可以將若干個本身完整的訊息在應用邏輯上歸為一組進行處理。3、對列     佇列是訊息的安全存放地,佇列儲存訊息直到它被應用程式處理。訊息佇列以下述方式工作:a) 程式A形成對訊息佇列系統的呼叫,此呼叫告知訊息佇列系統,訊息準備好了投向程式B;b) 訊息佇列系統傳送此訊息到程式B駐留處的系統,並將它放到程式B的佇列中;c) 適當時間後,程式B從它的佇列中讀此訊息,並處理此資訊。由於採用了先進的程式設計思想以及內部工作機制,MQ能夠在各種網路條件下保證訊息的可靠傳遞,可以克服網路線路質量差或不穩定的現狀,在傳輸過程中,如果 通訊線路出現故障或遠端的主機發生故障,本地的應用程式都不會受到影響,可以繼續傳送資料,而無需等待網路故障恢復或遠端主機正常後再重新執行。      在MQ中,佇列分為很多種型別,其中包括:本地佇列、遠端佇列、模板佇列、動態佇列、別名佇列等。本地佇列又分為普通本地佇列和傳輸佇列,普通本地佇列是應用程式通過API對其進行讀寫操作的佇列;傳輸佇列可以理解為儲存-轉發佇列,比如:我們將某個消 息交給MQ系統傳送到遠端主機,而此時網路發生故障,MQ將把訊息放在傳輸佇列中暫存,當網路恢復時,再發往遠端目的地。遠端佇列是目的佇列在本地的定義,它類似一個地址指標,指向遠端主機上的某個目的佇列,它僅僅是個定義,不真正佔用磁碟儲存空間。模 板佇列和動態佇列是MQ的一個特色,它的一個典型用途是用作系統的可擴充套件性考慮。我們可以建立一個模板佇列,當今後需要新增佇列時,每開啟一個模板隊 列,MQ便會自動生成一個動態佇列,我們還可以指定該動態佇列為臨時佇列或者是永久佇列,若為臨時佇列我們可以在關閉它的同時將它刪除,相反,若為永久隊 列,我們可以將它永久保留,為我所用。4、通道     通道是MQ系統中佇列管理器之間傳遞訊息的管道,它是建立在物理的網路連線之上的一個邏輯概念,也是MQ產品的精華。在 MQ中,主要有三大類通道型別,即訊息通道,MQI通道和Cluster通道。訊息通道是用於在MQ的伺服器和伺服器之間傳輸訊息的,需要強調指出的是, 該通道是單向的,它又有傳送(sender), 接收(receive), 請求者(requestor), 服務者(server)等不同型別,供使用者在不同情況下使用。MQI通道是MQ Client和MQ Server之間通訊和傳輸訊息用的,與訊息通道不同,它的傳輸是雙向的。群集(Cluster)通道是位於同一個MQ 群集內部的佇列管理器之間通訊使用的。MQ工作原理

如圖所示:

首先來看本地通訊的情況,應用程式A和應用程式B運行於同一系統A,它們之間可以藉助訊息佇列技術進行彼此的通訊:應用程式A向佇列1傳送一條資訊,而當應用程式B需要時就可以得到該資訊。

其 次是遠端通訊的情況,如果資訊傳輸的目標改為在系統B上的應用程式C,這種變化不會對應用程式A產生影響,應用程式A向佇列2傳送一條資訊,系統A的MQ 發現Q2所指向的目的佇列實際上位於系統B,它將資訊放到本地的一個特殊佇列-傳輸佇列(Transmission Queue)。我們建立一條從系統A到系統B的訊息通道,訊息通道代理將從傳輸佇列中讀取訊息,並傳遞這條資訊到系統B,然後等待確認。只有MQ接到系統 B成功收到資訊的確認之後,它才從傳輸佇列中真正將該資訊刪除。如果通訊線路不通,或系統B不在執行,資訊會留在傳輸佇列中,直到被成功地傳送到目的地。 這是MQ最基本而最重要的技術--確保資訊傳輸,並且是一次且僅一次(once-and-only-once)的傳遞。

MQ提供了用於應用整合的鬆耦合的連線方法,因為共享資訊的應用不需要知道彼此物理位置(網路地址);不需要知道彼此間怎樣建立通訊;不需要同時處於執行狀態;不需要在同樣的作業系統或網路環境下執行。

如果文章對你用,請支援萬事如意網址導航