主流消息队列MQ对比
生活随笔
收集整理的這篇文章主要介紹了
主流消息队列MQ对比
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
本文將從多個維度綜合對比Kafka、RabbitMQ、RocketMQ、ActiveMQ這4款當前最主流的MQ消息中間件產(chǎn)品,希望能為您的下一次產(chǎn)品的架構(gòu)設(shè)計和MQ消息中間件選型提供參考依據(jù)。
| 資料文檔 | 資料數(shù)量多 | 資料數(shù)量多 | 資料數(shù)量中等 | 資料數(shù)量少,建議去官網(wǎng)上看 |
| 開發(fā)語言 | Erlang | Java | Scala | Java |
| 支持的協(xié)議 | AMQP | OpenWire、STOMP、REST、XMPP、AMQP | 自己定義的一套…(基于TCP) | 自己定義的一套… |
| 消息存儲 | 內(nèi)存、磁盤。支持少量堆積 | 內(nèi)存、磁盤、數(shù)據(jù)庫。支持少量堆積。 | 內(nèi)存、磁盤、數(shù)據(jù)庫。支持大量堆積 | 磁盤。支持大量堆積。 |
| 消息事務 | 支持。客戶端將信道設(shè)置為事務模式,只有當消息被RabbitMQ接收,事務才能提交成功,否則在捕獲異常后進行回滾。使用事務會使得性能有所下降 | 支持 | 支持 | 支持 |
| 負載均衡 | 負載均衡的支持不好 | 支持負載均衡。基于zookeeper實現(xiàn)負載均衡。 | 支持 | 支持 |
| 集群方式 | 支持簡單集群,'復制'模式,對高級集群模式支持不好。 | 支持簡單集群模式,比如'主-備',對高級集群模式支持不好。 | 天然的‘Leader-Slave’無狀態(tài)集群,每臺服務器既是Master也是Slave。 | 常用 多對'Master-Slave' 模式,開源版本需手動切換Slave變成Master。 |
| 管理界面 | 好 | 一般 | 一般 | 有管理后臺, 但不是項目里自帶, 需要自己啟動一個單獨的管理后臺實例 |
| 可用性 | 高(主從) | 高(主從) | 非常高(分布式) | 非常高(分布式) |
| 消息重復 | 支持at least once、at most once | 支持at least once | 支持at least once、at most once | 支持at least once |
| 吞吐量(TPS) | 比較大 | 比較大 | 極大。Kafka按批次發(fā)送消息和消費消息。發(fā)送端將多個小消息合并,批量發(fā)向Broker,消費端每次取出一個批次的消息批量處理。 | 大。RocketMQ接收端可以批量消費消息,可以配置每次消費的消息數(shù),但是發(fā)送端不是批量發(fā)送。 |
| 順序消息 | 不支持 | 不支持 | 支持 ? | 支持 |
| 消息回溯 | 不支持 | 不支持 | 支持指定分區(qū)offset位置的回溯 | 支持指定分區(qū)offset位置的回溯 |
| 消息重試 | 不支持,但是可以利用消息確認機制實現(xiàn)。 | 不支持 | 不支持,但是可以利用消息確認機制實現(xiàn) | 支持 |
| 并發(fā)度 | 并發(fā)度極高。本身是用Erlang語言寫的,并發(fā)性能高。 | 并發(fā)度高 | 并發(fā)度高 | 并發(fā)度高。 |
綜上對比:從各個維度對目前主流的MQ進行,以及目前的使用情況來看,針對日志的較大的場景,建議使用Kafka,就并發(fā)和消息的堆積能力來說,這方面kafka是最優(yōu)秀的,ActivitMQ,和rabbitMQ作為老牌MQ,由于入場時間較早,已經(jīng)占領(lǐng)了較大的市場,市場占有率較高,但由于實現(xiàn)的語言比較小眾,擴展方面存在一定的短板;RocketMQ作為國產(chǎn)的MQ,且開源時間較晚,高并發(fā)情況下有很不錯的性能表現(xiàn),特別是在多個topic的情況下,性能依舊非常穩(wěn)定,且支持已上絕大多數(shù)的特性,特別是用java開發(fā),所以有比較好的擴展性,是一個不錯的選擇,后續(xù)的關(guān)于MQ的文章也是基于RocketMQ來寫。
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的主流消息队列MQ对比的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ffmpeg接收g723音频流
- 下一篇: 2020年11月计算机二级题库,2020