最近要為公司的消息隊列中間件進行選型,市面上相關的開源技術又非常多,如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這兩款無疑也是現在市場上有得比較多的兩款消息隊列中間件,從網路資料和面試要求也可以看得出來。

關於這兩者非常全的評測,參考:mp.weixin.qq.com/s?

如何抉擇??

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

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

關注Java技術棧微信公眾號,在後台回復:架構,獲取棧長整理的架構教程,都是實戰乾貨,以下僅為部分預覽。

  • 分散式 ID 生成器的解決方案總結
  • 分散式 Session 共享解決方案
  • 分散式鎖與冪等性問題解決方案
  • 微服務架構及分散式事務解決方案
  • 高並發大流量訪問處理及解決方案
  • ……

推薦閱讀:

相关文章