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 羣集內部的隊列管理器之間通訊使用的。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章