一:什麼是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:存儲轉發模型相似信件投遞,寫信的人將消息寫給某人,但在將信件發出的時候,收信的人並不必定在家等待,也並不知道有消息給他。但這個消息不會丟失,會放在收信者的信箱中。這種模型容許信息的異步交換。
--->其餘通訊模型。。。編程