Kafka、RabbitMQ、RocketMQ 消息中間件的對比 | 消息發送性能篇
阿裏雲消息隊列測試小組 出品
分布式係統中,我們廣泛運用消息中間件進行係統間的數據交換,便於異步解耦。現在開源的消息中間件有很多,我們自家的產品 RocketMQ (阿裏雲消息隊列(MQ)的內核) 也順利開源,得到大家的關注。
那麼,消息中間件性能究竟哪家強?
帶著這個疑問,我們消息隊列測試小組對常見的三類消息產品(Kafka、RabbitMQ、RocketMQ)做了性能比較。
Kafka是LinkedIn開源的分布式發布-訂閱消息係統,目前歸屬於Apache定級項目。Kafka主要特點是基於Pull的模式來處理消息消費,追求高吞吐量,一開始的目的就是用於日誌收集和傳輸。0.8版本開始支持複製,不支持事務,對消息的重複、丟失、錯誤沒有嚴格要求,適合產生大量數據的互聯網服務的數據收集業務。
RabbitMQ是使用Erlang語言開發的開源消息隊列係統,基於AMQP協議來實現。AMQP的主要特征是麵向消息、隊列、路由(包括點對點和發布/訂閱)、可靠性、安全。AMQP協議更多用在企業係統內,對數據一致性、穩定性和可靠性要求很高的場景,對性能和吞吐量的要求還在其次。
RocketMQ是阿裏開源的消息中間件,它是純Java開發,具有高吞吐量、高可用性、適合大規模分布式係統應用的特點。RocketMQ思路起源於Kafka,但並不是Kafka的一個Copy,它對消息的可靠傳輸及事務性做了優化,目前在阿裏集團被廣泛應用於交易、充值、流計算、消息推送、日誌流式處理、binglog分發等場景。
測試目的
對比Kafka、RabbitMQ、RocketMQ發送小消息(124字節)的性能。這次壓測我們隻關注服務端的性能指標,所以壓測的標準是:
不斷增加發送端的壓力,直到係統吞吐量不再上升,而響應時間拉長。這時服務端已出現性能瓶頸,可以獲得相應的係統最佳吞吐量。
測試場景
在同步發送場景中,三個消息中間件的表現區分明顯:
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。
作為專業的阿裏雲消息隊列測試小組,不禁想問,阿裏雲的MQ和Kafka相比,哪家強?
阿裏雲消息隊列 Kafka VS Apache Kafka
阿裏雲消息隊列 MQ 推出 Kafka 企業級消息服務(MQ-Kafka),全麵融合 Kafka 開源生態,兼容 Kafka API,做到無縫遷移,打造更安全、更可靠、更易運維的 Kafka 企業級消息服務。
測試小組此次也對Apache Kafka和消息隊列 Kafka 企業級消息服務在性能、可用性、可靠性等方麵做了如下對比:
對比項 | Apache Kafka(開源) | 阿裏雲 MQ-Kafka |
---|---|---|
安全防護 | × | √ |
主子賬號支持 | × | √ |
性能(常規) | 非常好 | 非常好 |
性能(萬級Topic情況下) | 低 | 非常好 |
性能(海量消息堆積情況下) | 低 | 非常好 |
可靠性 | 一般 | 非常好,99.99999999% |
可用性 | 好 | 非常好,99.99%,Always Writable |
全鏈路消息軌跡 | × | √ |
消息堆積查詢 | × | √ |
消息回溯 | × | √ |
服務支持 | 用戶自己運維 | 阿裏雲平台統一運維 |
阿裏雲 MQ-Kafka 的多方優勢:
無縫遷移
業務係統基於現有的 Kafka 代碼與生態進行開發,無需任何改造,即可無縫遷移到阿裏雲消息隊列提供的 Kafka 消息服務。
安全防護
Aliware MQ 提供的 Kafka 消息服務利用 SASL 機製對用戶身份進行認證,並利用 SSL 對通道進行加密,提供更加安全的消息服務。
高可靠/高可用
消息持久化落盤到消息隊列,支持數多副本以及主備自動切換,可靠性達99.99999999%,服務可用性高達99.9%。
高性能
支持在萬級 Topic,以及海量的消息堆積的情況下,也始終保持超高的性能。
統一運維
提供一整套包括資源申請、資源授權、消息堆積查詢、消息全鏈路軌跡、監控告警等運維服務,提升用戶的產品體驗。
消息互通
您可以通過 Kafka Client 發送消息,MQ Client 訂閱消息。反之亦然,真正做到 Aliware MQ 與 Kafka 消息完全互通。
免費試用
Kafka 企業級消息服務正在公測,用戶可免費使用。
立刻去了解Kafka的接入方式吧,無語倫比的簡單~而且現在還免費喲~
關於 阿裏雲消息隊列 MQ,立即查看詳情~
最後更新:2017-08-21 15:02:18