本文轉載自:http://blog.csdn.net/linsongbin1/article/details/47781187
----------------------------------------------------------------------------------------------------
mq架構非常之多,比較流行的有rabbitmq、activemq、zeromq、kafka。這幾種mq到底應該選擇哪個?要根據自己項目的業務場景和需求。下面我列出這些mq之間的對比資料和資料。
第一部分:rabbitmq,activemq,zeromq比較
1、 tps比較 一
zeromq 最好,rabbitmq 次之, activemq 最差。這個結論來自于以下這篇文章。
http://blog.x-aeon.com/2013/04/10/a-quick-message-queue-benchmark-activemq-rabbitmq-hornetq-qpid-apollo/
測試環境:
model: dell studio 1749
cpu: intel core i3 @ 2.40 ghz
ram: 4 gb
os: windows 7 64 bits
其中包括持久化消息和瞬時消息的測試。注意這篇文章裡面提到的mq,都是采用預設配置的,并無調優。
更多的統計圖請參看我提供的文章url。
2、tps比較二
zeromq 最好,rabbitmq次之, activemq最差。這個結論來自于一下這篇文章。http://www.cnblogs.com/amityat/archive/2011/08/31/2160293.html
顯示的是發送和接受的每秒鐘的消息數。整個過程共産生1百萬條1k的消息。測試的執行是在一個windows vista上進行的。
3、持久化消息比較
zeromq不支援,activemq和rabbitmq都支援。持久化消息主要是指:mq down或者mq所在的伺服器down了,消息不會丢失的機制。
4、技術點:可靠性、靈活的路由、叢集、事務、高可用的隊列、消息排序、問題追蹤、可視化管理工具、插件系統、社群
rabbitmq最好,activemq次之,zeromq最差。當然zeromq也可以做到,不過自己必須手動寫代碼實作,代碼量不小。尤其是可靠性中的:持久性、投遞确認、釋出者證明和高可用性。
是以在可靠性和可用性上,rabbitmq是首選,雖然activemq也具備,但是它性能不及rabbitmq。
5、高并發
從實作語言來看,rabbitmq最高,原因是它的實作語言是天生具備高并發高可用的erlang語言。
總結:
按照目前網絡上的資料,rabbitmq、activem、zeromq三者中,綜合來看,rabbitmq是首選。下面提供一篇文章,是淘寶使用rabbitmq的心得,可以參看一些業務場景。
http://www.docin.com/p-462677246.html
第二部分:kafka和rabbitmq的比較
關于這兩種mq的比較,網上的資料并不多,最權威的的是kafka的送出者寫一篇文章。http://www.quora.com/what-are-the-differences-between-apache-kafka-and-rabbitmq
裡面提到的要點:
1、 rabbitmq比kafka成熟,在可用性上,穩定性上,可靠性上,rabbitmq超過kafka
2、 kafka設計的初衷就是處理日志的,可以看做是一個日志系統,針對性很強,是以它并沒有具備一個成熟mq應該具備的特性
3、 kafka的性能(吞吐量、tps)比rabbitmq要強,這篇文章的作者認為,兩者在這方面沒有可比性。
這裡在附上兩篇文章,也是關于kafka和rabbitmq之間的比較的:
1、http://www.mrhaoting.com/?p=139
2、http://www.liaoqiqi.com/post/227
兩者對比後,我仍然是選擇rabbitmq,性能其實是很強勁的,同時具備了一個成熟的mq應該具有的特性,我們無需重新發明輪子。
好資料推薦:
1、最全最給力的kafka部落格:http://blog.csdn.net/lizhitao/article/category/2194509
2、淘寶對rabbitmq的使用:http://www.docin.com/p-462677246.html