天天看點

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、RabbitMQ、RocketMQ 消息中間件的對比 | 消息發送性能篇

在同步發送場景中,三個消息中間件的表現區分明顯:

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相比,哪家強?

阿裡雲消息隊列 mq 推出 kafka 企業級消息服務(mq-kafka),全面融合 kafka 開源生态,相容 kafka api,做到無縫遷移,打造更安全、更可靠、更易運維的 kafka 企業級消息服務。

測試小組此次也對apache kafka和消息隊列 kafka 企業級消息服務在性能、可用性、可靠性等方面做了如下對比:

對比項

apache kafka(開源)

阿裡雲 mq-kafka

安全防護

×

主子賬号支援

性能(正常)

非常好

性能(萬級topic情況下)

性能(海量消息堆積情況下)

可靠性

一般

非常好,99.99999999%

可用性

非常好,99.99%,always writable

全鍊路消息軌迹

消息堆積查詢

消息回溯

服務支援

使用者自己運維

阿裡雲平台統一運維

業務系統基于現有的 kafka 代碼與生态進行開發,無需任何改造,即可無縫遷移到阿裡雲消息隊列提供的 kafka 消息服務。

aliware mq 提供的 kafka 消息服務利用 sasl 機制對使用者身份進行認證,并利用 ssl 對通道進行加密,提供更加安全的消息服務。

消息持久化落盤到消息隊列,支援數多副本以及主備自動切換,可靠性達99.99999999%,服務可用性高達99.9%。

支援在萬級 topic,以及海量的消息堆積的情況下,也始終保持超高的性能。

提供一整套包括資源申請、資源授權、消息堆積查詢、消息全鍊路軌迹、監控告警等運維服務,提升使用者的産品體驗。

您可以通過 kafka client 發送消息,mq client 訂閱消息。反之亦然,真正做到 aliware mq 與 kafka 消息完全互通。

kafka 企業級消息服務正在公測,使用者可免費使用。

<a href="https://help.aliyun.com/document_detail/52376.html?spm=5176.doc52374.6.611.uxnvvm">立刻去了解kafka的接入方式吧,無語倫比的簡單~而且現在還免費喲~</a>

<a href="https://www.aliyun.com/product/ons?spm=5176.160646.833249.1.owc6mz">關于 阿裡雲消息隊列 mq,立即檢視詳情~</a>