最近要為公司的消息隊列中間件進行選型,市面上相關的開源技術又非常多,如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這兩款無疑也是現在市場上有得比較多的兩款消息隊列中間件,從網路資料和面試要求也可以看得出來。
關於這兩者非常全的評測,參考:https://mp.weixin.qq.com/s?__biz=MzI3NDAwNDUwNg==&mid=2648307598&idx=1&sn=eeaa9d795ef6ba13368e7a76ca14bae7&chksm=f337f8fbc44071ed8496f251a0b449f63f70c290947c642914f1f1c8349e1cccde4c1841323a#rd
如何抉擇??
總體來說,分散式消息中間件Kafka和RabbitMQ在行業認可、服務支持、可靠性、可維護性、兼容性、易用性等方面各有特色。Kafka在開源許可證、產品活躍度、性能、安全性、可擴展性等方面優於RabbitMQ,Kafka採用的許可證更寬鬆,活躍度更高,性能遠高於RabbitMQ,在安全性和可擴展性方面能夠提供更好的保障。Kafka僅在功能上略少於RabbitMQ,但是已經具備了主要的功能。
綜合上述所有評測結果,我們決定選擇Kafka。
關注Java技術棧微信公眾號,在後台回復:架構,獲取棧長整理的架構教程,都是實戰乾貨,以下僅為部分預覽。
推薦閱讀: