天天看點

kafka vs rabbitmq vs rocketmq對比

RocketMQ

淘寶内部的交易系統使用了淘寶自主研發的 Notify 消息中間件,使用 Mysql 作為消息存儲媒介,可

完全水準擴容,為了進一步降低成本,我們認為存儲部分可以進一步優化,2011 年初,Linkin 開源

了 Kafka 這個優秀的消息中間件,淘寶中間件團隊在對 Kafka 做過充分 Review 之後,Kafka 無限消

息堆積,高效的持久化速度吸引了我們,但是同時發現這個消息系統主要定位于日志傳輸,對于使用

在淘寶交易、訂單、充值等場景下還有諸多特性不滿足,為此我們重新用 Java 語言編寫了 RocketMQ,

定位于非日志的可靠消息傳輸(日志場景也 OK),目前 RocketMQ 在阿裡集團被廣泛應用在訂單,

交易,充值,流計算,消息推送,日志流式處理,binglog 分發等場景。

Kafka

Kafka 是 LinkedIn 開源的分布式釋出-訂閱消息系統,目前歸屬于 Apache 定級項目。Kafka 主要特

點是基于 Pull 的模式來處理消息消費,追求高吞吐量,一開始的目的就是用于日志收集和傳輸。0.8

版本開始支援複制,不支援事務,對消息的重複、丢失、錯誤沒有嚴格要求,适合産生大量資料的互

聯網服務的資料收集業務。

RabbitMQ

RabbitMQ 是使用 Erlang 語言開發的開源消息隊列系統,基于 AMQP 協定來實作。AMQP 的主要特

征是面向消息、隊列、路由(包括點對點和釋出/訂閱)、可靠性、安全。AMQP 協定更多用在企業

系統内,對資料一緻性、穩定性和可靠性要求很高的場景,對性能和吞吐量的要求還在其次。

有關測試結論

Kafka 的吞吐量高達 17.3w/s,不愧是高吞吐量消息中間件的行業老大。這主要取決于它的隊列模式

保證了寫磁盤的過程是線性 IO。此時 broker 磁盤 IO 已達瓶頸。

RocketMQ 也表現不俗,吞吐量在 11.6w/s,磁盤 IO %util 已接近 100%。RocketMQ 的消息寫入内

存後即傳回 ack,由單獨的線程專門做刷盤的操作,所有的消息均是順序寫檔案。

RabbitMQ 的吞吐量 5.95w/s,CPU 資源消耗較高。它支援 AMQP 協定,實作非常重量級,為了保

證消息的可靠性在吞吐量上做了取舍。我們還做了 RabbitMQ 在消息持久化場景下的性能測試,吞吐

量在 2.6w/s 左右。

在服務端處理同步發送的性能上,Kafka>RocketMQ>RabbitMQ。

對比了最簡單的小消息發送場景,Kafka 暫時勝出。但是,作為經受過曆次雙十一洗禮的 RocketMQ,在

網際網路應用場景中更有它優越的一面。

功能對比

kafka vs rabbitmq vs rocketmq對比
kafka vs rabbitmq vs rocketmq對比
kafka vs rabbitmq vs rocketmq對比

其它對比

kafka vs rabbitmq vs rocketmq對比