天天看點

二:apache的Qpid消息中間件介紹

一:什麼是Qpid?

--->Qpid 是 Apache 開發的一款面向對象的消息中間件,它是一個 AMQP 的實作,可以和其他符合 AMQP 協定的系統進行通信。

--->Qpid 提供了 C++/Python/Java/C# 等主流程式設計語言的用戶端庫,安裝使用非常友善。

二:Qpid的出現的原因?

--->在系統間通信最基礎的通信方式是 socket,但 socket 比較底層。使用起來非常不易。如果需要一些進階特性,需要很多的程式設計負擔。

--->比如企業級應用往往有巨量的資料需要交換,對可靠性的要求也比較高。比如一個分布式的财務處理軟體,每時每刻都有成千上萬的使用者在使用,需要産生難以想象 的海量消息,每個消息可能都關乎某人的銀行賬戶等關鍵資訊,如果丢失将帶來巨大損失。編寫這樣一個通信中間件不是一件容易的事情,即使編寫出來,假如需要 和其他的軟體系統互動資訊,又需要大量的格式轉換,接口遷移等工作。

--->為了解決以上這些問題,人們開發出了很多的軟體産品和協定。從早期的 RPC,到複雜的面向消息的中間件 (MOM),再到 JMS,人們取得了很多的進步,

--->RPC,Corba 等技術是同步的,即調用者必須等待對方的回複,這意味着調用者必須了解接收者,是一種緊耦合的模型。緊耦合意味着不靈活,而在軟體行業唯一不變的就是變化,當需求和環境發生變化時,緊耦合的應用修改代價非常高。

--->為此衆多的消息中間件産品應運而生,打破了消息生産者和消費者之間的緊耦合關系。但中間件産品是由各個廠商自行定義和實作的,在整合企業級應用的時候,人們發現各種應用往往采用了不同的技術和中間件産品,要想讓這些産品互通消息,又是一件非常困難的事情。

--->JMS 是标準化的一種努力,但其缺點在于 JMS 是 J2EE 的标準,假如不是采用 Java 技術實作的産品,想使用 JMS 還是比較麻煩的。

--->假如這正是您時時刻刻所想的問題,那麼 Qpid 便是您值得了解的一款開源軟體。它實作了可靠複雜的通信中間件,支援多種通信模型,效率高,平台語言無關,而且實作了業界的通信标準 AMQP。

三:企業級别消息通信的模型?

--->點對點:A 發消息給 B。

--->廣播:A 發給所有其他人的消息

--->多點傳播:A 發給多個但不是所有其他人的消息。

--->Requester/response:類似通路網頁的通信方式,用戶端發請求并等待,服務端回複該請求

--->Pub-sub:類似雜志發行,出版雜志的人并不知道誰在看這本雜志,訂閱的人并不關心誰在發表這本雜志。出版的人隻管将資訊釋出出去,訂閱的人也隻在需要的時候收到該資訊。

--->Store-and-forward:存儲轉發模型類似信件投遞,寫信的人将消息寫給某人,但在将信件發出的時候,收信的人并不一定在家等待,也并不知道有消息給他。但這個消息不會丢失,會放在收信者的信箱中。這種模型允許資訊的異步交換。

--->其他通信模型。。。