Kafka、RabbitMQ、RocketMQ消息中間件的對(duì)比 | 消息發(fā)送性能篇

分布式系統(tǒng)中,我們廣泛運(yùn)用消息中間件進(jìn)行系統(tǒng)間的數(shù)據(jù)交換,便于異步解耦。現(xiàn)在開(kāi)源的消息中間件有很多,前段時(shí)間我們自家的產(chǎn)品 RocketMQ (阿里云消息隊(duì)列(MQ)的內(nèi)核) 也順利開(kāi)源,得到大家的關(guān)注。

那么,消息中間件性能究竟哪家強(qiáng)?

帶著這個(gè)疑問(wèn),我們消息隊(duì)列測(cè)試小組對(duì)常見(jiàn)的三類消息產(chǎn)品(Kafka、RabbitMQ、RocketMQ)做了性能比較。

Kafka是LinkedIn開(kāi)源的分布式發(fā)布-訂閱消息系統(tǒng),目前歸屬于Apache定級(jí)項(xiàng)目。Kafka主要特點(diǎn)是基于Pull的模式來(lái)處理消息消費(fèi),追求高吞吐量,一開(kāi)始的目的就是用于日志收集和傳輸。0.8版本開(kāi)始支持復(fù)制,不支持事務(wù),對(duì)消息的重復(fù)、丟失、錯(cuò)誤沒(méi)有嚴(yán)格要求,適合產(chǎn)生大量數(shù)據(jù)的互聯(lián)網(wǎng)服務(wù)的數(shù)據(jù)收集業(yè)務(wù)。

RabbitMQ是使用Erlang語(yǔ)言開(kāi)發(fā)的開(kāi)源消息隊(duì)列系統(tǒng),基于AMQP協(xié)議來(lái)實(shí)現(xiàn)。AMQP的主要特征是面向消息、隊(duì)列、路由(包括點(diǎn)對(duì)點(diǎn)和發(fā)布/訂閱)、可靠性、安全。AMQP協(xié)議更多用在企業(yè)系統(tǒng)內(nèi),對(duì)數(shù)據(jù)一致性、穩(wěn)定性和可靠性要求很高的場(chǎng)景,對(duì)性能和吞吐量的要求還在其次。

RocketMQ是阿里開(kāi)源的消息中間件,它是純Java開(kāi)發(fā),具有高吞吐量、高可用性、適合大規(guī)模分布式系統(tǒng)應(yīng)用的特點(diǎn)。RocketMQ思路起源于Kafka,但并不是Kafka的一個(gè)Copy,它對(duì)消息的可靠傳輸及事務(wù)性做了優(yōu)化,目前在阿里集團(tuán)被廣泛應(yīng)用于交易、充值、流計(jì)算、消息推送、日志流式處理、binglog分發(fā)等場(chǎng)景。

測(cè)試目的

對(duì)比Kafka、RabbitMQ、RocketMQ發(fā)送小消息(124字節(jié))的性能。這次壓測(cè)我們只關(guān)注服務(wù)端的性能指標(biāo),所以壓測(cè)的標(biāo)準(zhǔn)是:

不斷增加發(fā)送端的壓力,直到系統(tǒng)吞吐量不再上升,而響應(yīng)時(shí)間拉長(zhǎng)。這時(shí)服務(wù)端已出現(xiàn)性能瓶頸,可以獲得相應(yīng)的系統(tǒng)最佳吞吐量。

測(cè)試場(chǎng)景

在同步發(fā)送場(chǎng)景中,三個(gè)消息中間件的表現(xiàn)區(qū)分明顯:

Kafka的吞吐量高達(dá)17.3w/s,不愧是高吞吐量消息中間件的行業(yè)老大。這主要取決于它的隊(duì)列模式保證了寫(xiě)磁盤(pán)的過(guò)程是線性IO。此時(shí)broker磁盤(pán)IO已達(dá)瓶頸。

RocketMQ也表現(xiàn)不俗,吞吐量在11.6w/s,磁盤(pán)IO %util已接近100%。RocketMQ的消息寫(xiě)入內(nèi)存后即返回ack,由單獨(dú)的線程專門(mén)做刷盤(pán)的操作,所有的消息均是順序?qū)懳募?/p>

RabbitMQ的吞吐量5.95w/s,CPU資源消耗較高。它支持AMQP協(xié)議,實(shí)現(xiàn)非常重量級(jí),為了保證消息的可靠性在吞吐量上做了取舍。我們還做了RabbitMQ在消息持久化場(chǎng)景下的性能測(cè)試,吞吐量在2.6w/s左右。

測(cè)試結(jié)論

在服務(wù)端處理同步發(fā)送的性能上,Kafka>RocketMQ>RabbitMQ。

作為專業(yè)的阿里云消息隊(duì)列測(cè)試小組,不禁想問(wèn),阿里云的MQ和Kafka相比,哪家強(qiáng)?

阿里云消息隊(duì)列 Kafka VS Apache Kafka

阿里云消息隊(duì)列 MQ 推出 Kafka 企業(yè)級(jí)消息服務(wù)(MQ-Kafka),全面融合 Kafka 開(kāi)源生態(tài),兼容 Kafka API,做到無(wú)縫遷移,打造更安全、更可靠、更易運(yùn)維的 Kafka 企業(yè)級(jí)消息服務(wù)。

測(cè)試小組此次也對(duì)Apache Kafka和消息隊(duì)列 Kafka 企業(yè)級(jí)消息服務(wù)在性能、可用性、可靠性等方面做了如下對(duì)比:

對(duì)比項(xiàng)

Apache Kafka(開(kāi)源)

阿里云 MQ-Kafka

展開(kāi)全文

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于消息隊(duì)列,從前年開(kāi)始斷斷續(xù)續(xù)看了些資料,想寫(xiě)很久了,但一直沒(méi)騰出空,近來(lái)分別碰到幾個(gè)朋友聊這塊的技術(shù)選型,是時(shí)...
    預(yù)流閱讀 586,599評(píng)論 51 787
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評(píng)論 19 139
  • 背景介紹 Kafka簡(jiǎn)介 Kafka是一種分布式的,基于發(fā)布/訂閱的消息系統(tǒng)。主要設(shè)計(jì)目標(biāo)如下: 以時(shí)間復(fù)雜度為O...
    高廣超閱讀 13,052評(píng)論 8 167
  • 一、 消息隊(duì)列概述 消息隊(duì)列中間件是分布式系統(tǒng)中重要的組件,主要解決應(yīng)用耦合、異步消息、流量削鋒等問(wèn)題。實(shí)現(xiàn)高性能...
    步積閱讀 57,438評(píng)論 10 138
  • 孫晴悅LeanInShanghai 說(shuō)實(shí)話,我從來(lái)沒(méi)想過(guò)這個(gè)問(wèn)題。但有好多姑娘在后臺(tái)問(wèn)我,于是就發(fā)了這個(gè)問(wèn)題,想問(wèn)...
    LeanInShanghai閱讀 856評(píng)論 0 1

友情鏈接更多精彩內(nèi)容