天天看點

消息中間件ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、Kafka如何選型?

最近要為公司的消息隊列中間件進行選型,市面上相關的開源技術又非常多,如ActiveMQ、RabbitMQ、ZeroMQ、Kafka,還有阿裡巴巴的RocketMQ等。

這麼多技術,如何進行選型呢?

首先對于阿裡的RocketMQ,因為是阿裡開源的,對于國内開源的保持謹慎的态度,暫時不采取該中間件。

是以隻能在ActiveMQ、RabbitMQ、ZeroMQ、Kafka中間選一款作為消息隊列中間件。

下面從幾個次元來對比下

1、社群活躍度

從目前網上的資料上看,RabbitMQ、activeMQ、ZeroMQ三者中RabbitMQ絕對是首選。

2、消息持久化

ZeroMq不支援消息持久化,ActiveMQ和RabbitMQ都支援。

3、核心技術

可靠性、靈活的路由、叢集、事務、高可用的隊列、消息排序、問題追蹤、可視化管理工具、插件系統等等。

RabbitMq / Kafka最好,ActiveMQ次之,ZeroMQ最差。當然ZeroMQ也可以做到,不過自己必須手動寫代碼實作,工作量不小。尤其是可靠性中的:持久性、投遞确認、釋出者證明和高可用性。

4、高并發

毋庸置疑RabbitMQ最高,因為RabbitMQ是由天生具備高并發高可用特性的erlang語言實作的。

以上對比參考來源網絡,大同小異。總結就是需要從RabbitMQ和Kafka之間選一款适合自己的。RabbitMQ和Kafka這兩款無疑也是現在市場上有得比較多的兩款消息隊列中間件,從網絡資料和面試要求也可以看得出來。

關于這兩者非常全的評測,參考:

http://geek.csdn.net/news/detail/246566

如何抉擇??

總體來說,分布式消息中間件Kafka和RabbitMQ在行業認可、服務支援、可靠性、可維護性、相容性、易用性等方面各有特色。Kafka在開源許可證、産品活躍度、性能、安全性、可擴充性等方面優于RabbitMQ,Kafka采用的許可證更寬松,活躍度更高,性能遠高于RabbitMQ,在安全性和可擴充性方面能夠提供更好的保障。Kafka僅在功能上略少于RabbitMQ,但是已經具備了主要的功能。

綜合上述所有評測結果,我們決定選擇Kafka