標籤:
一、MQ(Message Queue)
即 訊息佇列,一般用於應用系統解耦、訊息非同步分發,能夠提高系統輸送量。MQ的產品有很多,有開源的,也有閉源,比如ZeroMQ、RabbitMQ、 ActiveMQ、Kafka/Jafka、Kestrel、Beanstalkd、HornetQ、Apache Qpid、Sparrow、Starling、Amazon SQS、MSMQ等,甚至Redis也可以用來構造訊息佇列。至於如何取捨,取決於你的需求。 由於工作需要和興趣愛好,曾經寫過關於RabbitMQ的系列博文,對RabbitMQ的協議、安裝、配置、管理、監控、持久化、分布式、高可用、分區、 叢集、負載平衡等做過詳細介紹。這個系列的博文基本上能滿足工作中的一般需求。
目前業界有很多MQ產品,我們作如下對比:
二、RabbitMQ
是使用Erlang編寫的一個開源的訊息佇列,本身支援很多的協議:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它變的非常重量級,更適合於企業級的開發。同時實現了一個經紀人(Broker)構架,這意味著訊息在發送給用戶端時先在中心隊列排隊。對路由(Routing),負載平衡(Load balance)或者資料持久化都有很好的支援。
詳情參見:
- 《柯南君:看大資料時代下的IT架構(2)訊息佇列之RabbitMQ-基礎概念詳細介紹》
- 《柯南君:看大資料時代下的IT架構(3)訊息佇列之RabbitMQ-安裝、配置與監控》
三、Redis
是一個Key-Value的NoSQL資料庫,開發維護很活躍,雖然它是一個Key-Value資料庫儲存系統,但它本身支援MQ功能,所以完全可以當做一個輕量級的佇列服務來使用。對於RabbitMQ和Redis的入隊和出隊操作,各執行100萬次,每10萬次記錄一次執行時間。測試資料分為128Bytes、512Bytes、1K和10K四個不同大小的資料。實驗表明:入隊時,當資料比較小時Redis的效能要高於RabbitMQ,而如果資料大小超過了10K,Redis則慢的無法忍受;出隊時,無論資料大小,Redis都表現出非常好的效能,而RabbitMQ的出隊效能則遠低於Redis。 入隊 出隊 128B 512B 1K 10K 128B 512B 1K 10K Redis
四、ZeroMQ
號稱最快的訊息佇列系統,尤其針對大輸送量的需求情境。ZMQ能夠實現RabbitMQ不擅長的進階/複雜的隊列,但是開發人員需要自己組合多種技術架構,技術上的複雜度是對這MQ能夠應用成功的挑戰。ZeroMQ具有一個獨特的非中介軟體的模式,你不需要安裝和運行一個Message Service器或中介軟體,因為你的應用程式將扮演了這個服務角色。你只需要簡單的引用ZeroMQ程式庫,可以使用NuGet安裝,然後你就可以愉快的在應用程式之間發送訊息了。但是ZeroMQ僅提供非持久性的隊列,也就是說如果down機,資料將會丟失。其中,Twitter的Storm中使用ZeroMQ作為資料流的傳輸。
五、ActiveMQ
是Apache下的一個子項目。 類似於ZeroMQ,它能夠以代理人和點對點的技術實現隊列。同時類似於RabbitMQ,它少量代碼就可以高效地實現進階應用程式情境。RabbitMQ、ZeroMQ、ActiveMQ均支援常用的多種語言用戶端 C++、Java、.Net,、Python、 Php、 Ruby等。
六、Jafka/Kafka
Kafka是Apache下的一個子項目,是一個高效能跨語言分布式Publish/Subscribe訊息佇列系統,而Jafka是在Kafka之上孵化而來的,即Kafka的一個升級版。具有以下特性:快速持久化,可以在O(1)的系統開銷下進行訊息持久化;高吞吐,在一台普通的伺服器上既可以達到10W/s的吞吐速率;完全的分布式系統,Broker、Producer、Consumer都原生自動支援分布式,自動實現複雜均衡;支援Hadoop資料並行載入,對於像Hadoop的一樣的日誌資料和離線分析系統,但又要求即時處理的限制,這是一個可行的解決方案。Kafka通過Hadoop的並行載入機制來統一了線上和離線的訊息處理,這一點也是本課題所研究系統所看重的。Apache Kafka相對於ActiveMQ是一個非常輕量級的訊息系統,除了效能非常好之外,還是一個工作良好的分布式系統。
其他一些隊列列表HornetQ、Apache Qpid、Sparrow、Starling、Kestrel、Beanstalkd、Amazon SQS就不再一一分析。
通過以上的具體對比分析,TongLINK/Q與IBM的功能性相差不大,使用者常用功能已經完全支援。雖然在功能上還比MQ稍微欠缺一些,但“SOAP訊息的支援”和“資料庫事務”這兩個功能幾乎沒有多少實際的市場需求和應用,TongLINK/Q也沒有花費更多的精力在對這兩個功能的實現上,而且一直不懈的挖掘市場需求,為使用者提供更加實用的功能,不斷提高產品的效能和易用性。
TongLINK/Q提供的專屬功能特性普遍受到了使用者的認可,如檔案傳輸功能是目前很多企業所實際需要的,而TongLINK/Q也一直僅僅抓住了這個國內的公司專屬應用程式特點,收到了良好的市場反饋。
TongLINK/Q的產品的可靠性和穩定性也經曆了市場10多年的考驗,表現了驕人的成績。在金融、電信、交通、電力等各個領域,TongLINK/Q都擁有大量的應用案例。比如中國人民銀行中的全國支票影像交換系統中全面採用了東方通科技的TongLINK/Q產品,實現了支票在全國範圍的互連使用,目前該系統運行穩定,全國支票使用量逐步增加。這充分證明了TongLINK/Q對於大規模應用的適應能力。
1:ActiveMQ盡量少的建立串連,多次發送可以共用一個串連。如果每次都建立串連進行發送那麼它和MSMQ沒有可比性,即MSMQ效能遠遠高於ActiveMQ。但是如果減少串連申請那麼它效能原高於MSMQ。
2:ActiveMQ的訊息容量遠高於MSMQ
3:ActiveMQ在發送和接收同步的時候效率最高
4:ActiveMQ在大容量(百萬層級)表現更高的效能 5:ActiveMQ更靈活的操控和擴充
下面各個章節分別詳細介紹各個MQ產品
看大資料時代下的IT架構(1)業界訊息佇列對比