MQ同類產品對比以及選型-RabbitMQ的背後故事

         RabbitMQ是採用Erlang語言實現的AMQP開源版本,用於解決JMS消息協議標準化使得大型系統之間應用程序之間的結合變動的脆弱(JMS的解耦特性)。

爲什麼叫RabbitMQ
      兔子行動非常迅速而且繁殖起來也非常瘋狂,所以就把Rabbit用作這個分佈式軟件的命名----《RabbitMQ實戰》。
RabbitMQ產生背景

1、消息隊列系統最早由26歲孟買工程師構想,用於解決程序間繁重的通信工作。1983年最早的消息隊列軟件Teknekron誕生,當時僅用於一些金融交易等系統。

2、隨後,誕生了世界上第一個消息隊列軟件TIB(The Information  Bus)

3、20世紀80年代後期,誕生了多家消息隊列系統,例如IBM MQ、微軟的MSMQ、TIBCO MQ等消息隊列在企業中的應用也愈加廣泛。當時這些MQ完全是商用的,企業使用需要付出巨大的代價,並且各個供應商產品之間遵循不同的API協議。

4、2001 JMS(Java Message Servive)誕生,JMS的誕生是因爲中小企業對MQ高價格的不滿,Java開發者只需要遵循JMS API協議和技術規範即可。由於過分的標準化協議,使得大型系統(這裏參照的應該是金融系統)應用程序間的結合變得脆弱,因此需要一個新的標準。

5、2004年,AMQP(Advanced Message Queuing Protocol,高級消息隊列協議)開始開發,以解決衆多的消息隊列需求和拓撲結構問題。通過這一標準可以和任意AMQP供應商提供的MQ服務進行交互。

6、2006年,光陰荏苒時光如梭,一轉眼就說到了重點。我們的主角使用Erlang語言實現的AMQP開源版本,RabbitMQ誕生了,同年AMQP協議首次發佈。

爲什麼選擇RabbitMQ
     在衆多的理由裏面我覺得唯一具有差異性的就是“Rabbit是唯一實現了AMQP標準的代理服務器”。

總結:其他理由諸如
1.商業化運營,社區活躍,WEB管理和監控,集羣擴展容易(不支持動態擴展),高併發(Erlang特性,直接問題就是維護性降低)這些條件對於使用MQ服務的場景來說成本都可以接受;
2.RabbitMQ使用ProtoBuf序列化消息,相比XML具有數據量小3-10倍,速度快20-100倍,易於編程,減少語義的歧義。關於這個問題,這是ProtoBuf對比XML的優勢,對比JSON這個優勢也就沒有了。
3.支持多種客戶端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX,持久化。這個看語言選擇,但是我覺得這是產品運營優勢,而不是MQ服務優勢。
總結:

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