MQ框架非常之多,比較流行的有RabbitMq、ActiveMq、ZeroMq、kafka。這幾種MQ到底應該選擇哪個?要根據自己項目的業務場景和需求。
第一部分:RabbitMQ,ActiveMq,ZeroMq比較:
1、 TPS比較
ZeroMq 最好,RabbitMq 次之, ActiveMq 最差。
2、持久化消息比較
zeroMq不支持,activeMq和rabbitMq都支持。持久化消息主要是指:MQ down或者MQ所在的服務器down了,消息不會丟失的機制。
3、技術點:可靠性、靈活的路由、集群、事務、高可用的隊列、消息排序、問題追蹤、可視化管理工具、插件系統、社區
RabbitMq最好,ActiveMq次之,ZeroMq最差。當然ZeroMq也可以做到,不過自己必須手動寫代碼實現,代碼量不小。尤其是可靠性中的:持久性、投遞確認、發布者證實和高可用性。
所以在可靠性和可用性上,RabbitMQ是首選,雖然ActiveMQ也具備,但是它性能不及RabbitMQ。
4、高並發
從實現語言來看,RabbitMQ最高,原因是它的實現語言是天生具備高並發高可用的erlang語言。
來自:https://blog.csdn.net/qq_35873847/article/details/78737796
第二部分:kafka和RabbitMQ的比較
1、 RabbitMq比kafka成熟,在可用性上,穩定性上,可靠性上,RabbitMq超過kafka
2、 Kafka設計的初衷就是處理日志的,可以看做是一個日志系統,針對性很強,所以它並沒有具備一個成熟MQ應該具備的特性
3、 Kafka的性能(吞吐量、tps)比RabbitMq要強,
來自:https://blog.csdn.net/qq_35873847/article/details/78737796
第三部分:RabbitMQ 選型和對比
1.從社區活躍度
按照目前網絡上的資料,RabbitMQ
、activeM
、ZeroMQ
三者中,綜合來看,RabbitMQ
是首選。
2.持久化消息比較
ZeroMq
不支持,ActiveMq
和RabbitMq
都支持。持久化消息主要是指我們機器在不可抗力因素等情況下掛掉了,消息不會丟失的機制。
3.綜合技術實現
可靠性、靈活的路由、集群、事務、高可用的隊列、消息排序、問題追蹤、可視化管理工具、插件系統等等。
RabbitMq
/ Kafka
最好,ActiveMq
次之,ZeroMq
最差。當然ZeroMq
也可以做到,不過自己必須手動寫代碼實現,代碼量不小。尤其是可靠性中的:持久性、投遞確認、發布者證實和高可用性。
4.高並發
毋庸置疑,RabbitMQ
最高,原因是它的實現語言是天生具備高並發高可用的erlang
語言。
5.比較關注的比較, RabbitMQ 和 Kafka
RabbitMq
比Kafka
成熟,在可用性上,穩定性上,可靠性上, RabbitMq 勝於 Kafka (理論上)。
另外,Kafka
的定位主要在日志等方面, 因為Kafka
設計的初衷就是處理日志的,可以看做是一個日志(消息)系統一個重要組件,針對性很強,所以 如果業務方面還是建議選擇 RabbitMq
。
還有就是,Kafka
的性能(吞吐量、TPS
)比RabbitMq
要高出來很多。
選型最后總結:
如果我們系統中已經有選擇 Kafka ,或者 RabbitMq ,並且完全可以滿足現在的業務,建議就不用重復去增加和造輪子。
可以在 Kafka 和 RabbitMq 中選擇一個適合自己團隊和業務的,這個才是最重要的。但是毋庸置疑現階段,綜合考慮沒有第三選擇。
來自:https://www.sojson.com/blog/48.html
第四部分:對比圖
來自:https://blog.csdn.net/zhengholien/article/details/77911902