消息隊列技術是分佈式應用間交換信息的一種技術。消息隊列可駐留在內存或磁盤上, 隊列存儲消息直到它們被應用程序讀走。經過消息隊列,應用程序可獨立地執行--它們不須要知道彼此的位置、或在繼續執行前不須要等待接收程序接收此消息。在分佈式計算環境中,爲了集成分佈式應用,開發者須要對異構網絡環境下的分佈式應用提供有效的通訊手段。爲了管理須要共享的信息,對應用提供公共的信息交換機制是重要的。經常使用的消息隊列技術是 Message Queue。html
Message Queue 的通信模式算法
點對點通信:點對點方式是最爲傳統和常見的通信方式,它支持一對1、一對多、多對多、多對一等多種配置方式,支持樹狀、網狀等多種拓撲結構。服務器
多點廣播:MQ 適用於不一樣類型的應用。其中重要的,也是正在發展中的是"多點廣播"應用,即可以將消息發送到多個目標站點 (Destination List)。可使用一條 MQ 指令將單一消息發送到多個目標站點,並確保爲每一站點可靠地提供信息。MQ 不只提供了多點廣播的功能,並且還擁有智能消息分發功能,在將一條消息發送到同一系統上的多個用戶時,MQ 將消息的一個複製版本和該系統上接收者的名單發送到目標 MQ 系統。目標 MQ 系統在本地複製這些消息,並將它們發送到名單上的隊列,從而儘量減小網絡的傳輸量。網絡
發佈/訂閱 (Publish/Subscribe) 模式:發佈/訂閱功能使消息的分發能夠突破目的隊列地理指向的限制,使消息按照特定的主題甚至內容進行分發,用戶或應用程序能夠根據主題或內容接收到所須要的消息。發佈/訂閱功能使得發送者和接收者之間的耦合關係變得更爲鬆散,發送者沒必要關心接收者的目的地址,而接收者也沒必要關心消息的發送地址,而只是根據消息的主題進行消息的收發。併發
羣集 (Cluster):爲了簡化點對點通信模式中的系統配置,MQ 提供 Cluster(羣集) 的解決方案。羣集相似於一個域 (Domain),羣集內部的隊列管理器之間通信時,不須要兩兩之間創建消息通道,而是採用羣集 (Cluster) 通道與其它成員通信,從而大大簡化了系統配置。此外,羣集中的隊列管理器之間可以自動進行負載均衡,當某一隊列管理器出現故障時,其它隊列管理器能夠接管它的工做,從而大大提升系統的高可靠性。負載均衡